aboutsummaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
* Merge #8467bors[bot]2021-04-196-0/+269
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8467: Adds impl Deref assist r=jhgg a=jhgg This PR adds a new `generate_deref` assist that automatically generates a deref impl for a given struct field. Check out this gif: ![2021-04-11_00-33-33](https://user-images.githubusercontent.com/5489149/114296006-b38e1000-9a5d-11eb-9112-807c01b8fd0a.gif) -- I have a few Q's: - [x] Should I write more tests, if so, what precisely should I test for? - [x] I have an inline question on line 65, can someone provide guidance? :) - [x] I can implement this for `ast::TupleField` too. But should it be a separate assist fn, or should I try and jam both into the `generate_deref`? - [x] I want to follow this up with an assist on `impl $0Deref for T {` which would automatically generate a `DerefMut` impl that mirrors the Deref as well, however, I could probably use some pointers on how to do that, since I'll have to reach into the ast of `fn deref` to grab the field that it's referencing for the `DerefMut` impl. Co-authored-by: jake <[email protected]>
| * implement field stuff toojake2021-04-191-22/+106
| |
| * Adds impl Deref assistjake2021-04-116-0/+185
| |
* | Collect inherent impls in unnamed constsJonas Schievink2021-04-192-17/+62
| |
* | Fix visibility of items in block modulesJonas Schievink2021-04-192-1/+21
| |
* | Merge #8564bors[bot]2021-04-182-0/+11
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | 8564: Expand `global_asm!` to nothing r=jonas-schievink a=jonas-schievink fixes https://github.com/rust-analyzer/rust-analyzer/issues/8563 bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | Expand `global_asm!` to nothingJonas Schievink2021-04-182-0/+11
| | |
* | | Merge #8561bors[bot]2021-04-182-5/+23
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8561: Accept `E<error_number>` notation in doctests r=Veykril a=ChayimFriedman2 ```` ```compile_fail,E0000 ``` ```` The code was stolen from rustdoc at https://github.com/rust-lang/rust/blob/392ba2ba1a7d6c542d2459fb8133bebf62a4a423/src/librustdoc/html/markdown.rs#L866-L867 Co-authored-by: Chayim Refael Friedman <[email protected]>
| * | | Accept `E<error_number>` notation in doctestsChayim Refael Friedman2021-04-182-5/+23
| |/ / | | | | | | | | | | | | | | | | | | ```compile_fail,E0000 ``` The code was stolen from rustdoc at https://github.com/rust-lang/rust/blob/392ba2ba1a7d6c542d2459fb8133bebf62a4a423/src/librustdoc/html/markdown.rs#L866-L867
* | | Merge #8560bors[bot]2021-04-182-3/+23
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8560: Escape characters in doc comments in macros correctly r=jonas-schievink a=ChayimFriedman2 Previously they were escaped twice, both by `.escape_default()` and the debug view of strings (`{:?}`). This leads to things like newlines or tabs in documentation comments being `\\n`, but we unescape literals only once, ending up with `\n`. This was hard to spot because CMark unescaped them (at least for `'` and `"`), but it did not do so in code blocks. This also was the root cause of #7781. This issue was solved by using `.escape_debug()` instead of `.escape_default()`, but the real issue remained. We can bring the `.escape_default()` back by now, however I didn't do it because it is probably slower than `.escape_debug()` (more work to do), and also in order to change the code the least. Example (the keyword and primitive docs are `include!()`d at https://doc.rust-lang.org/src/std/lib.rs.html#570-578, and thus originate from macro): Before: ![image](https://user-images.githubusercontent.com/24700207/115130096-40544300-9ff5-11eb-847b-969e7034e8a4.png) After: ![image](https://user-images.githubusercontent.com/24700207/115130143-9cb76280-9ff5-11eb-9281-323746089440.png) Co-authored-by: Chayim Refael Friedman <[email protected]>
| * | Escape characters in doc comments in macros correctlyChayim Refael Friedman2021-04-182-3/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | Previously they were escaped twice, both by `.escape_default()` and the debug view of strings (`{:?}`). This leads to things like newlines or tabs in documentation comments being `\\n`, but we unescape literals only once, ending up with `\n`. This was hard to spot because CMark unescaped them (at least for `'` and `"`), but it did not do so in code blocks. This also was the root cause of #7781. This issue was solved by using `.escape_debug()` instead of `.escape_default()`, but the real issue remained. We can bring the `.escape_default()` back by now, however I didn't do it because it is probably slower than `.escape_debug()` (more work to do), and also in order to change the code the least.
* | | Add some more error messages to fixture failure casesLukas Wirth2021-04-172-4/+6
| | |
* | | Add an error message to fixture errorsYoshua Wuyts2021-04-171-1/+3
| | |
* | | nail rowan version downBernhard Schuster2021-04-171-1/+1
| | | | | | | | | The different pre versions include breaking changes, which cause build failures for the users.
* | | Handle extended key value attr in mbeEdwin Cheng2021-04-173-48/+35
| | |
* | | Fix `TestDB::module_at_position` with submodulesJonas Schievink2021-04-172-2/+72
| | |
* | | Merge #8546bors[bot]2021-04-162-2/+35
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8546: Return CallInfo for unclosed call expressions r=Veykril a=Veykril Closes #8522 bors r+ Co-authored-by: Lukas Wirth <[email protected]>
| * | | Return CallInfo for unclosed call expressionsLukas Wirth2021-04-162-2/+35
| | | |
* | | | Merge #8542bors[bot]2021-04-168-20/+40
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8542: Include path in `unresolved-macro-call` diagnostic r=matklad a=jonas-schievink Co-authored-by: Jonas Schievink <[email protected]>
| * | | | Include path in `unresolved-macro-call` diagnosticJonas Schievink2021-04-168-20/+40
| |/ / /
* | | | 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
| | | | | | |