aboutsummaryrefslogtreecommitdiff
path: root/crates/syntax/src
Commit message (Collapse)AuthorAgeFilesLines
...
* Merge #6456bors[bot]2020-11-041-2/+25
|\ | | | | | | | | | | | | | | | | | | | | | | 6456: Support record variants in extract_struct_from_enum_variant r=matklad a=Veykril As requested :) This also prevents the assist from being disabled if a definition in the value namespace exists with the same name as our new struct since that won't cause a collision #4468 Co-authored-by: Lukas Wirth <[email protected]>
| * Support struct variants in extract_struct_from_enum_variantLukas Wirth2020-11-031-2/+25
| |
* | Merge #6454bors[bot]2020-11-032-1/+66
|\ \ | |/ |/| | | | | | | | | | | | | 6454: Fix overflow panic in convert_interger_literal assist r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * Fix overflow panic in convert_interger_literal assistAleksey Kladov2020-11-032-1/+66
| | | | | | | | | | | | | | | | | | This also seizes the opportunity to move integer literal parsing to the syntax crate, were it logically belongs. Note though that this is still done in an ad hoc manner -- we probably should split kitchen sink ast::Literal into a separate APIs for strings, ints, etc
* | Make insert_use return a SyntaxRewriterLukas Wirth2020-11-021-0/+37
|/
* Merge #6365bors[bot]2020-11-021-40/+120
|\ | | | | | | | | | | | | | | | | | | | | | | 6365: Do insertion lookahead in algo::diff r=matklad a=Veykril This is the last blocker for #6287 after this I can update that PR to properly fix things through using `SyntaxRewriter`. This PR also shuffles tests around a bit and adds some more. Ideally this is just a hack until we implement a "proper" diff algorithm that approximates a minimal diff. Maybe something like [gumtree](https://github.com/GumTreeDiff/gumtree)? Co-authored-by: Lukas Wirth <[email protected]>
| * Do insertion lookahead in algo::diffLukas Wirth2020-10-261-40/+120
| |
* | Deny unreachable-pubAleksey Kladov2020-11-026-16/+15
|/ | | | | | | | It's very useful when `pub` is equivalent to "this is crate's public API", let's enforce this! Ideally, we should enforce it for local `cargo test`, and only during CI, but that needs https://github.com/rust-lang/cargo/issues/5034.
* Merge #6347bors[bot]2020-10-261-24/+141
|\ | | | | | | | | | | | | | | 6347: Support insertion in SyntaxRewriter r=Veykril a=Veykril Co-authored-by: Lukas Wirth <[email protected]>
| * Remove InsertPos::Before variant in Syntax RewriterLukas Wirth2020-10-241-13/+20
| |
| * Support insertion in SyntaxRewriterLukas Wirth2020-10-241-24/+134
| |
* | Merge #6331 #6342bors[bot]2020-10-241-3/+11
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6331: correct hover text for items with doc attribute with raw strings r=matklad a=JoshMcguigan Fixes #6300 by improving the handling of raw string literals in attribute style doc comments. This still has a bug where it could consume too many `"` at the start or end of the comment text, just as the original code had. Not sure if we want to fix that as part of this PR or not? If so, I think I'd prefer to add a unit test for either the `as_simple_key_value` function (I'm not exactly sure where this would belong / how to set this up) or create a `fn(&SmolStr) -> &SmolStr` to unit test by factoring out the `trim` operations from `as_simple_key_value`. Thoughts on this? 6342: Shorter dependency chain r=matklad a=popzxc Continuing implementing suggestions from the `Completion refactoring` zulip thread. This PR does the following: - Removes dependency of `completions` on `assists` by moving required functionality into `ide_db`. - Moves completely `call_info` crate into `ide_db` as it looks like it fits perfect there. - Adds a bunch of new tests and docs. - Adds the re-export of `base_db` to the `ide_db` and removes direct dependency on `base_db` from other crates. The last point is controversial, I guess, but I noticed that in places where `ide_db` is used, `base_db` is also *always* used. Thus I think the dependency on the `base_db` is implied by the fact of `ide_db` interfaces, and thus it makes sense to just provide `base_db` out of the box. Co-authored-by: Josh Mcguigan <[email protected]> Co-authored-by: Igor Aleksanov <[email protected]>
| * correct hover for items with doc attribute with raw stringsJosh Mcguigan2020-10-241-3/+11
| |
* | algo::diff testsLukas Wirth2020-10-221-2/+326
| |
* | Rewrite algo::diff to support insertion and deletionLukas Wirth2020-10-221-23/+64
|/
* Merge #6172bors[bot]2020-10-201-0/+3
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6172: Add qualify path assist r=matklad a=Veykril This implements a `qualify_path` assist which works quite similar to the `auto_import` assist but instead of adding imports to the file it well, qualifies the path. This PR also moves out the `AutoImportAssets` struct and functions from `auto_import` into a utils submodule as most of this is now shared between `auto_import` and `qualify_path`. Changes made to `AutoImportAssets` are solely in its `search_for_imports` function which now takes a prefixed parameter to discern between using `find_use_path_prefixed` and `find_use_path` as the former is the required behavior by `auto_import` and the latter by this assist. For missing imported traits instead of importing this will qualify the path with a trait cast as in: ```rust test_mod::TestStruct::TEST_CONST<|> ``` becomes ```rust <test_mod::TestStruct as test_mod::TestTrait>::TEST_CONST ``` and for trait methods ideally it would do the following: ```rust let test_struct = test_mod::TestStruct {}; test_struct.test_meth<|>od() ``` becomes ```rust let test_struct = test_mod::TestStruct {}; test_mod::TestTrait::test_method(&test_struct) ``` Fixes #4124. Co-authored-by: Lukas Wirth <[email protected]>
| * Properly qualify trait methods in qualify_path assistLukas Wirth2020-10-151-0/+3
| |
* | Extract call_info and completion into separate cratesIgor Aleksanov2020-10-182-0/+84
|/
* when generating new function, focus on return type instead of bodyBenjamin Coenen2020-10-081-1/+11
| | | | Signed-off-by: Benjamin Coenen <[email protected]>
* CleanupAleksey Kladov2020-10-071-10/+13
|
* Merge #6160bors[bot]2020-10-071-1/+44
|\ | | | | | | | | | | | | | | 6160: Add validation check for ambiguous trait objects r=matklad a=Veykril Fixes #285. Co-authored-by: Lukas Wirth <[email protected]>
| * Add validation check for ambiguous trait objectsLukas Wirth2020-10-061-1/+44
| |
* | Document privacy invariant of SyntaxPtrAleksey Kladov2020-10-061-0/+2
|/
* Merge #6104bors[bot]2020-10-021-1/+1
|\ | | | | | | | | | | | | | | 6104: Minor clippy performance suggestions r=matklad a=kjeremy Co-authored-by: kjeremy <[email protected]>
| * Minor clippy performance suggestionskjeremy2020-09-301-1/+1
| |
* | Up rustc-ap-rustc_lexer to 681kjeremy2020-10-011-4/+4
|/ | | | cargo update as well
* Merge #6019bors[bot]2020-09-291-5/+28
|\ | | | | | | | | | | | | | | 6019: Remove make::path_from_text r=matklad a=Veykril This removes the `make::path_from_text` function, which according to a note should've been private. I removed it since it didn't really serve a purpose as it was simply wrapping `make::ast_from_text`. Co-authored-by: Lukas Wirth <[email protected]>
| * Remove make::path_from_textLukas Wirth2020-09-161-5/+28
| |
* | Rename impl edit method to be more explicitMatt Hooper2020-09-211-1/+1
| |
* | Add make utility for empty associated item listsMatt Hooper2020-09-211-0/+4
| |
* | Add edit utility for adding an associated item list to a impl defMatt Hooper2020-09-211-0/+16
| |
* | Add make::glob_use_tree function to create star-only UseTreeLukas Wirth2020-09-161-0/+4
| |
* | Reimplement import merging by making it recursive properly nesting all levelsLukas Wirth2020-09-121-0/+1
|/
* Merge #5940bors[bot]2020-09-042-1/+84
|\ | | | | | | | | | | | | | | 5940: Implement "Replace `impl Trait` function argument with the named generic" assist. r=matklad a=alekseysidorov Fixes #5085 Co-authored-by: Aleksei Sidorov <[email protected]>
| * Remove unnecessary commaAleksei Sidorov2020-09-041-1/+0
| |
| * Fix testsAleksei Sidorov2020-09-041-1/+1
| |
| * Fix nitpicksAleksei Sidorov2020-09-041-17/+2
| |
| * Resolve most of corner casesAleksei Sidorov2020-09-031-4/+22
| |
| * Initial implementation of the #5085 issueAleksei Sidorov2020-09-032-0/+81
| |
* | Impl make::blank_lineLukas Wirth2020-09-031-1/+11
|/
* Unify namingAleksey Kladov2020-09-031-4/+4
|
* Reduce path_from_text usageAleksey Kladov2020-08-311-0/+1
|
* Remove dead codeAleksey Kladov2020-08-311-14/+0
|
* :arrow_up: cratesAleksey Kladov2020-08-271-1/+1
|
* Cleanup invert-ifAleksey Kladov2020-08-251-6/+3
| | | | | * stick to trivial factory functions in make * compress the logic for inverting Option/Result
* Support extern typesJonas Schievink2020-08-241-1/+7
|
* Merge #5845bors[bot]2020-08-241-1/+1
|\ | | | | | | | | | | | | | | 5845: Omit lenses for not runnable doctests r=matklad a=SomeoneToIgnore Ideally, we should properly parse the doctest attributes before, but since I need it for the code lens only, this way should suffice for now Co-authored-by: Kirill Bulatov <[email protected]>
| * Omit lenses for not runnable doctestsKirill Bulatov2020-08-221-1/+1
| |
* | Invert if should be smart about is_some, is_none, is_ok, is_errdragfire2020-08-241-1/+7
|/
* :arrow_up: ungrammarAleksey Kladov2020-08-211-1/+2
|