aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide
Commit message (Collapse)AuthorAgeFilesLines
* Completition for type name? #3418Steffen Lyngbaek2020-03-192-3/+120
| | | | | | | | Iterate through TupleStructPat's until a MatchArm if one exists. Store in a new is_pat_bind_and_path bool and allow the `complete_scope` to find matches. Added some tests to ensure it works in simple and nested cases.
* Check that no file contains trailing wsAleksey Kladov2020-03-171-4/+4
| | | | rustfmt allows trailing spaces in string literals unfortunately.
* Fix typophynalle2020-03-171-2/+2
|
* Add test, remove printlnsFlorian Diebold2020-03-161-0/+53
|
* Get tests workingFlorian Diebold2020-03-162-2/+13
|
* wipFlorian Diebold2020-03-162-4/+13
|
* Attempt to implement ranking of rules when none matches perfectly (wip)Florian Diebold2020-03-161-1/+38
|
* Make MBE expansion more resilient (WIP)Florian Diebold2020-03-162-1/+38
|
* Remove dat fixmeVeetaha2020-03-161-1/+1
|
* Merge #3603bors[bot]2020-03-162-2/+2
|\ | | | | | | | | | | | | | | 3603: Fix crate display name dashes r=matklad a=SomeoneToIgnore A follow-up of https://github.com/rust-analyzer/rust-analyzer/pull/3602#discussion_r392733525 Co-authored-by: Kirill Bulatov <[email protected]>
| * Use Display instead of a custom methodKirill Bulatov2020-03-161-16/+11
| |
| * Fix crate display name dashesKirill Bulatov2020-03-162-12/+17
| |
* | Merge #3540bors[bot]2020-03-162-9/+30
|\ \ | |/ |/| | | | | | | | | | | 3540: Swtches to rust SSR query check r=matklad a=mikhail-m1 related to #3186 Co-authored-by: Mikhail Modin <[email protected]>
| * Swtches to rust SSR query checkMikhail Modin2020-03-152-9/+30
| |
* | Merge #3602bors[bot]2020-03-162-66/+33
|\ \ | | | | | | | | | | | | | | | | | | | | | 3602: ra_ide: remove dead code, migrate from readonly String -> &str r=matklad a=Veetaha https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0/topic/hover/near/190671355 Co-authored-by: veetaha <[email protected]>
| * | ra_ide: refactor readonly String -> &strveetaha2020-03-162-25/+28
| | |
| * | ra_ide: remove dead code in HoverResultveetaha2020-03-151-41/+5
| | |
* | | Merge #3591bors[bot]2020-03-151-0/+15
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3591: Support local macro_rules r=matklad a=edwin0cheng This PR implement local `macro_rules` in function body, by adding following things: 1. While lowering, add a `MacroDefId` in body's `ItemScope` as a textual legacy macro. 2. Make `Expander::enter_expand` search with given `ItemScope`. 3. Make `Resolver::resolve_path_as_macro` search with `LocalItemScope`. Fix #2181 Co-authored-by: Edwin Cheng <[email protected]>
| * | | Support local macro_rulesEdwin Cheng2020-03-141-0/+15
| | | |
* | | | Fix completion of trait itemsFlorian Diebold2020-03-141-0/+32
| |/ / |/| | | | | | | | Trait items should be public by default.
* | | Simplify testsAleksey Kladov2020-03-131-20/+20
| | |
* | | Don't use generic DB where a concrete one will doAleksey Kladov2020-03-131-3/+6
|/ /
* | Fix completion of HashMap::newFlorian Diebold2020-03-134-4/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `ty` function in code_model returned the type with placeholders for type parameters. That's nice for printing, but not good for completion, because placeholders won't unify with anything else: So the type we got for `HashMap` was `HashMap<K, V, T>`, which doesn't unify with `HashMap<?, ?, RandomState>`, so the `new` method wasn't shown. Now we instead return `HashMap<{unknown}, {unknown}, {unknown}>`, which does unify with the impl type. Maybe we should just expose this properly as variables though, i.e. we'd return something like `exists<type, type, type> HashMap<?0, ?1, ?2>` (in Chalk notation). It'll make the API more complicated, but harder to misuse. (And it would handle cases like `type TypeAlias<T> = HashMap<T, T>` more correctly.)
* | Restore cargo-fmt gatingAleksey Kladov2020-03-131-1/+0
| |
* | Merge #3553bors[bot]2020-03-131-0/+39
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3553: Completions do not show for function with same name as mod r=matklad a=JoshMcguigan fixes #3444 I've added a test case in `crates/ra_ide/src/completion/complete_path.rs` which verifies the described behavior in #3444. Digging in, I found that [the module scope iterator](https://github.com/JoshMcguigan/rust-analyzer/blob/ba62d8bd1ce8a68b8d21aaf89ae1ea6787f18366/crates/ra_ide/src/completion/complete_path.rs#L22) only provides the module `z`, and does not provide the function `z` (although if I name the function something else then it does show up here). I thought perhaps the name wasn't being properly resolved, but I added a test in `crates/ra_hir_def/src/nameres/tests.rs` which seems to suggest that it is? I've tried to figure out how to bridge the gap between these two tests (one passing, one failing) to see where the function `z` is being dropped, but to this point I haven't been able to track it down. Any pointers on where I might look for this? Co-authored-by: Josh Mcguigan <[email protected]>
| * | fix issue 3444Josh Mcguigan2020-03-131-0/+39
| | |
* | | Merge #3572bors[bot]2020-03-131-0/+34
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3572: Add test for completion of unresolved items r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | | Add test for completion of unresolved itemsAleksey Kladov2020-03-131-0/+34
| | | |
* | | | Remove some TextUnit->usize escapeesCAD972020-03-131-6/+10
|/ / /
* | | Fix completion testsAleksey Kladov2020-03-123-0/+12
| | |
* | | Make naming more uniformAleksey Kladov2020-03-123-30/+30
| | |
* | | Merge #3543bors[bot]2020-03-122-21/+98
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3543: Parameter inlay hint separate from variable type inlay? #2876 r=matklad a=slyngbaek Add setting to allow enabling either type inlay hints or parameter inlay hints or both. Group the the max inlay hint length option into the object. - Add a new type for the inlayHint options. - Add tests to ensure the inlays don't happen on the server side Co-authored-by: Steffen Lyngbaek <[email protected]>
| * | | Switch from Vec<InlayKind> to object with propsSteffen Lyngbaek2020-03-121-11/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | - Instead of a single object type, use several individual nested types to allow toggling from the settings GUI - Remove unused struct definitions - Install and test that the toggles work
| * | | Address Issues from GithubSteffen Lyngbaek2020-03-103-30/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | - Updated naming of config - Define struct in ra_ide and use remote derive in rust-analyzer/config - Make inlayConfig type more flexible to support more future types - Remove constructor only used in tests
| * | | Parameter inlay hint separate from variable type inlay? #2876Steffen Lyngbaek2020-03-103-19/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add setting to allow enabling either type inlay hints or parameter inlay hints or both. Group the the max inlay hint length option into the object. - Add a new type for the inlayHint options. - Add tests to ensure the inlays don't happen on the server side
* | | | Add test on hoverEdwin Cheng2020-03-111-0/+19
| | | |
* | | | Implement dummy assert macroEdwin Cheng2020-03-111-6/+2
| |/ / |/| |
* | | Continue multiline non-doc comment blocksAleksey Kladov2020-03-111-3/+35
| | |
* | | Split on enter testsAleksey Kladov2020-03-111-15/+28
| | |
* | | Move on enter to a separate moduleAleksey Kladov2020-03-112-154/+177
| | |
* | | Merge #3549bors[bot]2020-03-113-0/+4
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3549: Implement env! macro r=matklad a=edwin0cheng This PR implements `env!` macro by adding following things: 1. Added `additional_outdirs` settings in vscode. (naming to be bikeshed) 2. Added `ExternSourceId` which is a wrapping for SourceRootId but only used in extern sources. It is because `OUT_DIR` is not belonged to any crate and we have to access it behind an `AstDatabase`. 3. This PR does not implement the `OUT_DIR` parsing from `cargo check`. I don't have general design about this, @kiljacken could we reuse some cargo watch code for that ? ~~Block on [#3536]~~ PS: After this PR , we (kind of) completed the `include!(concat!(env!('OUT_DIR'), "foo.rs")` macro call combo. [Exodia Obliterate!](https://www.youtube.com/watch?v=RfqNH3FoGi0) Co-authored-by: Edwin Cheng <[email protected]>
| * | | Add extern sourceEdwin Cheng2020-03-113-0/+4
| | | |
* | | | Merge #3555bors[bot]2020-03-1116-40/+93
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3555: Introduce completion test utils r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | Introduce completion test utilsAleksey Kladov2020-03-1116-48/+49
| | | | |
| * | | | Add a test for disabled argument snippetsAleksey Kladov2020-03-113-5/+57
| | |/ / | |/| |
* | | | Merge #3542bors[bot]2020-03-111-21/+187
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3542: Renames work on struct field shorthands r=matklad a=m-n When renaming either a local or a struct field, struct field shorthands are now renamed correctly. Happy to refactor this if it doesn't fit the design of the code. Thanks for adding the suggestion of where to start on the issue. I wasn't sure if I should also look at the behavior of renaming when placing the cursor at the field shorthand; the following describes the behavior with this patch: ```rust #[test] fn test_rename_field_shorthand_for_unspecified() { // when renaming a shorthand, should we have a way to specify // between renaming the field and the local? // // If not is this the correct default? test_rename( r#" struct Foo { i: i32, } impl Foo { fn new(i: i32) -> Self { Self { i<|> } } } "#, "j", r#" struct Foo { i: i32, } impl Foo { fn new(j: i32) -> Self { Self { i: j } } } "#, ); } ``` Resolves #3431 Co-authored-by: Matt Niemeir <[email protected]>
| * | | find_usages limited to actual usages againMatt Niemeir2020-03-111-0/+70
| | | |
| * | | Renaming a local renames struct field shorthandMatt Niemeir2020-03-101-5/+43
| | | |
| * | | Struct field rename renames field in constructor field shorthandMatt Niemeir2020-03-101-21/+79
| | |/ | |/|
* | | Fix completion with a partially unknown typeFlorian Diebold2020-03-101-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To test whether the receiver type matches for the impl, we unify the given self type (in this case `HashSet<{unknown}>`) with the self type of the impl (`HashSet<?0>`), but if the given self type contains Unknowns, they won't be unified with the variables in those places. So we got a receiver type that was different from the expected one, and concluded the impl doesn't match. The fix is slightly hacky; if after the unification, our variables are still there, we make them fall back to Unknown. This does make some sense though, since we don't want to 'leak' the variables. Fixes #3547.