aboutsummaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
* Merge #8539bors[bot]2021-04-165-7/+53
|\ | | | | | | | | | | | | | | | | | | 8539: fix: Do not propose inherent traits in flyimports and import assists r=flodiebold a=SomeoneToIgnore Closes https://github.com/rust-analyzer/rust-analyzer/issues/8520 I've went with a separate method approach, since the [highlighted code](https://github.com/rust-analyzer/rust-analyzer/issues/8520#issuecomment-819856337) has not`Type` and uses `Ty` to get his data, but the code I had to change has no access to `Ty` and has `Type` only. Co-authored-by: Kirill Bulatov <[email protected]>
| * Exclude inherent traits from flyimportsKirill Bulatov2021-04-165-7/+53
| |
* | Fix primitive shadowing with inner itemsJonas Schievink2021-04-162-1/+25
| |
* | Merge #8543bors[bot]2021-04-162-16/+24
|\ \ | |/ |/| | | | | | | | | | | | | 8543: Assist fix: Fill match arms for a tuple of a single enum. r=Veykril a=iDawer This is rather a small fix addressing an issue mentioned in https://github.com/rust-analyzer/rust-analyzer/issues/8493#issuecomment-818770670 Co-authored-by: Dawer <[email protected]>
| * Fill match arms for a tuple of a single enum.Dawer2021-04-162-16/+24
| |
* | change grammarMilo2021-04-151-4/+4
| |
* | Remove unneeded annotations from find_path testsJonas Schievink2021-04-151-6/+0
| |
| |
| \
*-. | Merge #8510 #8533bors[bot]2021-04-154-48/+75
|\ \| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8510: Move cursor position when using item movers r=jonas-schievink a=jonas-schievink This updates the cursor position when moving items around to stay in the same location within the moved node. I changed the `moveItem` response to `SnippetTextEdit[]`, since that made more sense to me (the file was ignored by the client anyways, since the edits always apply to the current document). It also matches `onEnter`, which seems logical to me, but please let me know if this doesn't make sense. There's still a bug in the client-side snippet code that will cause the cursor position to be slightly off when moving parameters in the same line (presumably we don't track the column correctly after deleting `$0`). Not really sure how to fix that immediately, but this PR should already be an improvement despite that bug. 8533: Fix typo in style guide r=jonas-schievink a=jonas-schievink Fixes bold text rendering bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | Move cursor position when using item moversJonas Schievink2021-04-134-48/+75
| | |
* | | Make find_path tests adhere to style guideJonas Schievink2021-04-151-260/+327
| |/ |/|
* | Do not show flyimports in trait or impl declarationsKirill Bulatov2021-04-151-0/+50
| |
* | Profile trait solving for all invocationsKirill Bulatov2021-04-143-6/+20
| |
* | Better places for spansKirill Bulatov2021-04-141-2/+1
| |
* | We need to go deeperKirill Bulatov2021-04-141-1/+5
| |
* | Add a missing spanKirill Bulatov2021-04-141-0/+2
|/
* internal: follow test style guide in typing.rsJonas Schievink2021-04-131-96/+104
|
* decl_check: follow test style guideJonas Schievink2021-04-131-60/+59
|
* Merge #8432bors[bot]2021-04-132-14/+150
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8432: decl_check: consider outer scopes' allows r=jonas-schievink a=lf- Fix #8417. Also makes it less noisy about no_mangle annotated stuff the user can do nothing about. Note: this still is broken with bitfield! macros. A repro in an ignore test is included here. I believe this bug is elsewhere, and I don't think I can work around it here. I would like help filing the remaining bug, as it does actually affect users, but I don't know how to describe the behaviour (or even if it is unintended). Co-authored-by: Jade <[email protected]>
| * address review feedbackJade2021-04-131-21/+35
| |
| * decl_check: consider outer scopes' allowsJade2021-04-082-10/+132
| | | | | | | | | | | | | | | | | | Fix #8417. Also makes it less noisy about no_mangle annotated stuff the user can do nothing about. Note: this still is broken with bitfield! macros. A repro in an ignore test is included here. I believe this bug is elsewhere, and I don't think I can work around it here.
* | Merge #8354bors[bot]2021-04-137-21/+87
|\ \ | | | | | | | | | | | | | | | | | | | | | 8354: Distinguishing between different operators in semantic highlighting r=matklad a=chetankhilosiya Co-authored-by: Chetan Khilosiya <[email protected]>
| * | 8279: Fix the not operator use and test case fix.Chetan Khilosiya2021-04-083-10/+3
| | |
| * | 8279: Added initial implementation forChetan Khilosiya2021-04-085-19/+92
| | | | | | | | | | | | Operator semantic highlighting.
* | | Merge #8415bors[bot]2021-04-131-2/+46
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8415: Fix faulty assertion when extracting function with macro call r=matklad a=brandondong **Reproduction:** ```rust fn main() { let n = 1; let k = n * n; dbg!(n); } ``` 1. Select the second and third lines of the main function. Use the "Extract into function" code assist. 2. Panic occurs in debug, error is logged in release: "[ERROR ide_assists::handlers::extract_function] assertion failed: matches!(path, ast :: Expr :: PathExpr(_))". 3. Function generates successfully on release where the panic was bypassed. ```rust fn fun_name(n: i32) { let k = n * n; dbg!(n); } ``` **Cause:** - The generated function will take `n` as a parameter. The extraction logic needs to search the usages of `n` to determine whether it is used mutably or not. The helper `path_element_of_reference` is called for each usage but the second usage is a macro call and fails the `Expr::PathExpr(_)` match assertion. - The caller of `path_element_of_reference` does implicitly assume it to be a `Expr::PathExpr(_)` in how it looks at its parent node for determining whether it is used mutably. This logic will not work for macros. - I'm not sure if there are any other cases besides macros where it could be something other than a `Expr::PathExpr(_)`. I tried various examples and could not find any. **Fix:** - Update assertion to include the macro case. - Add a FIXME to properly handle checking if a macro usage requires mutable access. For now, return false instead of running the existing logic that is tailored for `Expr::PathExpr(_)`'s. Co-authored-by: Brandon <[email protected]>
| * | | Add macro testBrandon2021-04-111-0/+32
| | | |
| * | | Add FIXME for macro caseBrandon2021-04-081-0/+13
| | | |
| * | | Fix faulty assertion when extracting function with macro callBrandon2021-04-081-2/+1
| | | |
* | | | Merge #8489bors[bot]2021-04-131-11/+199
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8489: Indent block expressions on enter r=matklad a=jonas-schievink This improves on https://github.com/rust-analyzer/rust-analyzer/pull/8388 by also indenting the created block expression on enter. ![on enter](https://user-images.githubusercontent.com/1786438/114444123-cb38d600-9bce-11eb-8af2-8e8d1c0f9908.gif) Co-authored-by: Jonas Schievink <[email protected]>
| * | | | Add a cov_markJonas Schievink2021-04-121-0/+2
| | | | |
| * | | | Simplify multiline checkJonas Schievink2021-04-121-18/+4
| | | | |
| * | | | Indent block expressions on enterJonas Schievink2021-04-121-12/+212
| | | | |
* | | | | Merge #8500bors[bot]2021-04-133-82/+131
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8500: internal: fix flakiness of accidentally quadratic test r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | | internal: fix flakiness of accidentally quadratic testAleksey Kladov2021-04-133-82/+131
| | | | | |
* | | | | | internal: don't use `#[should_panic]` for testsAleksey Kladov2021-04-132-24/+12
|/ / / / /
* | | | | feat: improve performance by delaying computation of fixes for diagnosticsAleksey Kladov2021-04-137-40/+74
| | | | |
* | | | | Ensure that listing&resolving code actions use the same set of actionsAleksey Kladov2021-04-132-23/+43
| | | | |
* | | | | Merge #8494bors[bot]2021-04-135-101/+72
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8494: internal: unfork code paths for unresolved and resolved assist r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | | internal: unfork code paths for unresolved and resolved assistAleksey Kladov2021-04-135-101/+72
| | | | | |
* | | | | | Exclude nightly tag from git describe to fix version stringLaurențiu Nicola2021-04-131-1/+2
|/ / / / /
* / / / / Fix typo: liner -> linearJakub Kądziołka2021-04-121-1/+1
|/ / / / | | | | | | | | :see_no_evil:
* | | | internal: prepare for lazy diagnosticsAleksey Kladov2021-04-126-77/+96
| | | |
* | | | fix: don't spam repeated error messages when `cargo check` failsAleksey Kladov2021-04-121-7/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Conceptually, using a *message* here is wrong, because this is a "status", rather than "point in time" thing. But statuses are an LSP extension, while messages are stable. As a compromise, send message only for more critical `metadata` failures, and only once per state change.
* | | | feat: avoid checking the whole project during initial loadingAleksey Kladov2021-04-1212-121/+237
| | | |
* | | | Remove assertion in impl collectionFlorian Diebold2021-04-111-4/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This condition should always be true for *valid* code, but of course there might be invalid code or things that we can't currently resolve. Fixes #8464.
* | | | Merge #8465bors[bot]2021-04-111-3/+3
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8465: Include more info in assert r=jonas-schievink a=jonas-schievink This helped find https://github.com/rust-analyzer/rust-analyzer/issues/8464 changelog skip bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | | | Include more info in assertJonas Schievink2021-04-111-3/+3
| | | | |
* | | | | Merge #8463bors[bot]2021-04-117-10/+88
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8463: Support macros in pattern position r=jonas-schievink a=jonas-schievink This was fairly easy, because patterns are limited to bodies, so almost all changes were inside body lowering. Co-authored-by: Jonas Schievink <[email protected]>
| * | | | | Support macros in pattern positionJonas Schievink2021-04-117-10/+88
| |/ / / /
* | | | | Merge #8436bors[bot]2021-04-101-19/+109
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8436: Fix extract function's mutability of variables outliving the body r=matklad a=brandondong **Reproduction:** ```rust fn main() { let mut k = 1; let mut j = 2; j += 1; k += j; } ``` 1. Select the first to third lines of the main function. Use the "Extract into function" code assist. 2. The output is the following which does not compile because the outlived variable `k` is declared as immutable: ```rust fn main() { let (k, j) = fun_name(); k += j; } fn fun_name() -> (i32, i32) { let mut k = 1; let mut j = 2; j += 1; (k, j) } ``` 3. We would instead expect the output to be: ```rust fn main() { let (mut k, j) = fun_name(); k += j; } ``` **Fix:** - Instead of declaring outlived variables as immutable unconditionally, check for any mutable usages outside of the extracted function. Co-authored-by: Brandon <[email protected]>
| * | | | Fix extract function's mutability of variables outliving the bodyBrandon2021-04-091-19/+109
| |/ / /