about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorLines
2024-07-25fix: handle new `TypeBoundKind` variantWinston H.-0/+1
2024-07-25fix: temporarily use `ast::GenericParamList`winstxnhdw-0/+4
2024-07-24fix: `use` cannot have optional genericsWinston H.-1/+1
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2024-07-23fix: move `use` parsing to outer match armwinstxnhdw-18/+19
2024-07-23chore: update codegenswinstxnhdw-89/+220
2024-07-23feat: add arm for `use` type boundwinstxnhdw-0/+6
2024-07-23feat: add `use` type bound grammarwinstxnhdw-0/+5
2024-07-23Auto merge of #17395 - ↵bors-366/+14
davidbarsky:david/remove-unindexed-project-notification, r=Veykril chore: remove `UnindexinedProject` notification This PR is split out from https://github.com/rust-lang/rust-analyzer/pull/17246/ (and contains its changes, which is a little annoying from a review perspective...). I'd like to land this change a week or so after #17246 lands in order to give any users of the unindexed project notification time to adopt migrate.
2024-07-23internal: remove UnindexedProject notificationDavid Barsky-366/+14
Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags:
2024-07-23Auto merge of #17483 - alibektas:ratoml/fixes, r=alibektasbors-115/+92
minor : fixes for ratoml module This is a follow-up PR to #17058. - Parse errors are reflected as such by defining a new variant called `ConfigError::ParseError` - New error collection has been added to store config level agnostic errors. EDIT : Some things that this PR promised to solve are removed and will be addressed by other PRs
2024-07-23rename config::ConfigChange::other_errors to validation_errorsAli Bektas-6/+5
2024-07-23Auto merge of #17675 - PaulDotSH:remove-lens-force-custom-commands-config, ↵bors-23/+2
r=lnicola Remove lens.forceCustomCommands config Closes https://github.com/rust-lang/rust-analyzer/issues/17643 A very simple PR that removes the lens.forceCustomCommands config feature without side effects.
2024-07-23Remove lens.forceCustomCommands configPaulDotSH-23/+2
2024-07-22Auto merge of #17671 - Veykril:binding-size, r=Veykrilbors-56/+94
internal: Shrink size of `Binding` This should save a bit of memory now that we LRU the source map
2024-07-22internal: Shrink size of `Binding`Lukas Wirth-56/+94
2024-07-22Auto merge of #17670 - Veykril:mem, r=Veykrilbors-26/+19
LRU `body_with_source_map` query This query is being invalidated all the time anyways (we have an extra query on top of it for the body incrementality that is not source dependent), so there is little reason to keep these around all the time when only some IDE features are interested in them.
2024-07-22LRU `body_with_source_map` queryLukas Wirth-26/+19
2024-07-22Auto merge of #17668 - Veykril:incorrect-nevers, r=Veykrilbors-3/+2
Remove incorrect never! invocations These can crop up when the `Future` related lang items are missing
2024-07-22Auto merge of #17542 - roife:fix-issue-17517, r=Veykrilbors-194/+1209
feat: go-to-def and find-references on control-flow keywords fix #17517. This PR implements **go-to-definition** and **find-references** functionalities for control flow keywords, which is similar to the behaviors in the `highlight-related` module. Besides, this PR also fixes some incorrect behaviors in `highlight-related`. ## Changes 1. **Support for go-to-definition on control flow keywords**: This PR introduces functionality allowing users to navigate on the definition of control flow keywords (`return`, `break`, `continue`). Commit: 2a3244ee147f898dd828c06352645ae1713c260f..7391e7a608634709db002a4cb09229de4d12c056. 2. **Bug fixes and refactoring in highlight-related**: - **Handling return/break/continue within try_blocks**: This PR adjusted the behavior of these keywords when they occur within `try_blocks`. When encounter these keywords, the program should exit the outer function or loop which containing the `try_blocks`, rather than the `try_blocks` itself; while the `?` will cause the program to exit `try_blocks`. Commit: 59d697e807f0197f59814b37dca1563959da4aa1. - **Support highlighting keywords in macro expansion for highlight-related**: Commit: 88df24f01727c23a667a763ee3ee0cec22d5ad52. - Detailed description for the bug fixes + The previous implementation of `preorder_expr` incorrectly treated `try_blocks` as new contexts, thereby r-a will not continue to traverse inner `return` and `break/continue` statements. To resolve this, a new function `preorder_expr_with_ctx_checker` has been added, allowing users to specify which expressions to skip. * For example, when searching for the `?` in the context, r-a should skip `try_blocks` where the `?` insides just works for `try_blocks`. But when search for the `return` keyword, r-a should collect both the `return` keywords inside and outside the `try_blocks` + Thus, this PR added `WalkExpandedExprCtx` (builder pattern). It offers the following improvements: customizable context skipping, maintenance of loop depth (for `break`/`continue`), and handling macro expansion during traversal. 3. **Support for find-references on control flow keywords**: This PR enables users to find all references to control flow keywords. Commit: 9202a33f81218fb9c2edb5d42e6b4de85b0323a8.
2024-07-22Auto merge of #17586 - ShoyuVanilla:tuple-arg-macro-rest, r=Veykrilbors-5/+108
Allow macro expansions into `RestPat` in tuple args work as ellipsis like plain `RestPat` Fixes #17292 Currently, Rust Analyzer lowers `ast::Pat::RestPat` into `Pat::Missing` in general cases on the following lines; https://github.com/rust-lang/rust-analyzer/blob/ffbc5ad993d5cd2f3b8bcf9a511165470944ab91/crates/hir-def/src/body/lower.rs#L1359-L1367 And in some proper positions such as `TupleStruct(..)`, it is specially handed on the following lines; https://github.com/rust-lang/rust-analyzer/blob/ffbc5ad993d5cd2f3b8bcf9a511165470944ab91/crates/hir-def/src/body/lower.rs#L1429-L1437 This behavior is reasonable because rustc does similar things in https://github.com/rust-lang/rust/blob/62c068feeafd1f4abbf87243d69cf8862e4dd277/compiler/rustc_ast_lowering/src/pat.rs#L108-L111 and https://github.com/rust-lang/rust/blob/62c068feeafd1f4abbf87243d69cf8862e4dd277/compiler/rustc_ast_lowering/src/pat.rs#L123-L142 But this sometimes works differently because Rust Analyzer expands macros while ast lowering; https://github.com/rust-lang/rust-analyzer/blob/ffbc5ad993d5cd2f3b8bcf9a511165470944ab91/crates/hir-def/src/body/lower.rs#L1386-L1398 https://github.com/rust-lang/rust-analyzer/blob/ffbc5ad993d5cd2f3b8bcf9a511165470944ab91/crates/hir-def/src/body/lower.rs#L941-L963 but rustc uses expanded ast in the corresponding tuple-handling process, so it does not have macro patterns there. https://github.com/rust-lang/rust/blob/62c068feeafd1f4abbf87243d69cf8862e4dd277/compiler/rustc_ast_lowering/src/pat.rs#L114 So, if a macro expansion in a tuple arg results in `..`, rustc permits it like plain `..` pattern, but Rust Analyzer rejects it. This is the root cause of #17292 and this PR allows macros expanded into `..` in a tuple arg position work as ellipsis like that.
2024-07-22Auto merge of #17667 - Veykril:r-a-component-override, r=Veykrilbors-18/+44
Use rustup rust-analyzer component when there is a toolchain file override for the opened workspace Fixes https://github.com/rust-lang/rust-analyzer/issues/17663
2024-07-22Remove incorrect never! invocationsLukas Wirth-3/+2
2024-07-22Use rustup rust-analyzer component when there is a toolchain file override ↵Lukas Wirth-18/+44
for the opened workspace
2024-07-22Auto merge of #17647 - joshka:jm/rename-commands, r=Veykrilbors-9/+9
Rename rust-analyzer commands The commands `editor.action.triggerParameterHints` and `editor.action.rename` are now renamed to `rust-analyzer.triggerParameterHints` and `rust-analyzer.rename` This change helps make it clear that these commands are specific to rust-analyzer and not part of the default set of commands provided by VSCode. Fixes: https://github.com/rust-lang/rust-analyzer/issues/17644 Note: This seems like it will be a breaking change for any RA client that previously reacted to `editor.action.triggerParameterHints` - naive search: https://github.com/search?q=editor.action.triggerParameterHints+AND+%28NOT+is%3Afork%29+rust-analyzer&type=code
2024-07-22Auto merge of #17666 - Veykril:simplify, r=Veykrilbors-139/+65
Simplify
2024-07-22SimplifyLukas Wirth-139/+65
2024-07-22Auto merge of #17660 - ObsidianMinor:fix/17645, r=Veykrilbors-1/+71
Fix more path resolution for included submodules Now with more comprehensive testing! This adds tests for includes within modules. Previous testing was not comprehensive enough since submodules that use `include!` didn't actually work either! The `ModDir` used for resolving mods relative to included files has to be `ModDir::root()`. The original test just so happened to put the submodules in the root which made this work, but if you put the `include!` inside a `mod` block it didn't work. With this change, when collecting a macro expansion, if the macro call is an `include!`, we use the `ModDir::root()` instead of the current module we're in.
2024-07-22Auto merge of #17658 - alibektas:rename_get_field, r=Veykrilbors-3/+3
minor: Rename `config::get_field` to `config::get_field_json`
2024-07-21Fix more path resolution for included submodulesSydney Acksman-1/+71
Now with much more comprehensive testing! This adds tests for includes within modules.
2024-07-22Add FIXME to root ratoml tests.Ali Bektas-9/+8
2024-07-22Apply changes to ratoml/fixesAli Bektas-5/+9
2024-07-22Minor fixes for ratoml moduleAli Bektas-115/+90
- Parse errors are reflected as such by defining a new variant called `ConfigError::ParseError` - New error collection has been added to store config level agnostic errors.
2024-07-21Rename `config::get_field` to `config::get_field_json`Ali Bektas-3/+3
2024-07-21Auto merge of #17657 - Veykril:cfg-slim, r=lnicolabors-64/+77
internal: Make `CfgExpr` slimmer
2024-07-21Make `CfgExpr` slimmerLukas Wirth-64/+77
2024-07-21Auto merge of #17656 - Veykril:flyimport-builtin-mod, r=Veykrilbors-2/+28
fix: Allow flyimport to import primitive shadowing modules Fixes https://github.com/rust-lang/rust-analyzer/issues/16371
2024-07-21fix: Allow flyimport to import primitive shadowing modulesLukas Wirth-2/+28
2024-07-21Auto merge of #17655 - Veykril:std-find-path, r=Veykrilbors-224/+320
More `find_path` improvements
2024-07-21Optimize `find_path` for sysroot library search some moreLukas Wirth-98/+112
2024-07-21Fix visited module tracking not clearing itself on backtrackingLukas Wirth-46/+86
2024-07-21Use out parameter instead of return value for `find_path` choiceLukas Wirth-56/+53
2024-07-21Fix using wrong length for max_len argLukas Wirth-2/+7
2024-07-21Specialize `find_path` local searchLukas Wirth-28/+45
2024-07-21Optimize `find_path` choice selectionLukas Wirth-122/+145
2024-07-21Auto merge of #17653 - Veykril:std-find-path, r=Veykrilbors-6/+69
Prefer standard library paths over shorter extern deps re-exports This should generally speed up path finding for std items as we no longer bother looking through all external dependencies. It also makes more sense to prefer importing std items from the std dependencies directly. Fixes https://github.com/rust-lang/rust-analyzer/issues/17540
2024-07-21Prefer standard library paths over shorter extern deps re-exportsLukas Wirth-6/+69
2024-07-21Auto merge of #17650 - ObsidianMinor:fix/17645, r=Veykrilbors-5/+47
Fix path resolution for child mods of those expanded by `include!` Child modules wouldn't use the correct candidate paths due to a branch that doesn't seem to be doing what it's intended to do. Removing the branch fixes the problem and all existing test cases pass. Having no knowledge of how any of this works, I believe this fixes #17645. Using another test that writes the included mod directly into `lib.rs` instead, I found the difference can be traced to the candidate files we use to look up mods. A separate branch for if the file comes from an `include!` macro doesn't take into account the original mod we're contained within: ```rust None if file_id.macro_file().map_or(false, |it| it.is_include_macro(db.upcast())) => { candidate_files.push(format!("{}.rs", name.display(db.upcast()))); candidate_files.push(format!("{}/mod.rs", name.display(db.upcast()))); } ``` I'm not sure why this branch exists. Tracing the branch back takes us to 3bb9efb but it doesn't say *why* the branch was added. The test case that was added in this commit passes with the branch removed, so I think it's just superfluous at this point.
2024-07-20Fix path resolution for child mods of those expanded by `include!`Sydney Acksman-5/+47
Child modules wouldn't use the correct candidate paths due to a branch that doesn't seem to be doing what it's intended to do. Removing the branch fixes the problem and all existing test cases pass.
2024-07-20Auto merge of #17649 - ShoyuVanilla:issue-17585, r=Veykrilbors-0/+21
fix: Panic in debug profile for tuple deconstruct with arity mismatch Fixes #17585, which doesn't affect daily use cases but quite annoying in development of r-a itself like writing tests. This PR applies similar approach as in #17534, skipping match usefulness check for patterns containing errors
2024-07-21fix: Panic in debug profile for tuple deconstruct with arity mismatchShoyu Vanilla-0/+21