aboutsummaryrefslogtreecommitdiff
path: root/crates/syntax/src
Commit message (Collapse)AuthorAgeFilesLines
* Avoid allocation in ast::String::value if the string needs no unescapingLukas Wirth2020-11-271-9/+18
|
* Merge #6558bors[bot]2020-11-161-0/+22
|\ | | | | | | | | | | | | | | | | 6558: format string highlighting: handle hex + debug type specifier r=matklad a=ruabmbua Should fix https://github.com/rust-analyzer/rust-analyzer/issues/6427 Co-authored-by: Roland Ruckerbauer <[email protected]>
| * format string highlighting: handle hex + debug type specifierRoland Ruckerbauer2020-11-151-0/+22
| |
* | Use shorthand record syntax when renaming struct initializer fieldLukas Wirth2020-11-142-9/+13
|/
* Fix attachment of inner doc commentsAleksey Kladov2020-11-122-16/+30
|
* Simplify codeAleksey Kladov2020-11-121-28/+23
|
* Merge #6512bors[bot]2020-11-091-36/+89
|\ | | | | | | | | | | | | | | | | | | | | 6512: Don't replace parent node when inserting as first child in algo::diff r=SomeoneToIgnore a=Veykril This makes the diff a bit more detailed. See https://github.com/rust-analyzer/rust-analyzer/pull/6287#issuecomment-723889267 for context cc @SomeoneToIgnore Co-authored-by: Lukas Wirth <[email protected]>
| * Don't replace parent node when inserting as first child in algo::diffLukas Wirth2020-11-091-36/+89
| |
* | Fix debug for SyntaxRewriterAleksey Kladov2020-11-091-1/+4
| |
* | Merge #6476bors[bot]2020-11-071-0/+4
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6476: Add missing AssocItems in add_custom_impl assist r=matklad a=Veykril ```rust use std::fmt; #[derive(Debu<|>g)] struct Foo { bar: String, } ``` -> ```rust use std::fmt; struct Foo { bar: String, } impl fmt::Debug for Foo { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { ${0:todo!()} } } ``` Co-authored-by: Lukas Wirth <[email protected]>
| * Add missing AssocItems in add_custom_impl assistLukas Wirth2020-11-051-0/+4
| |
* | Cleanup APIAleksey Kladov2020-11-063-85/+68
| |
* | SimplifyAleksey Kladov2020-11-062-34/+22
| |
* | Kill RAW_ literalsAleksey Kladov2020-11-067-65/+61
| | | | | | | | | | Syntactically, they are indistinguishable from non-raw versions, so it doesn't make sense to separate then *at the syntax* level.
* | Minor, cleanup styleAleksey Kladov2020-11-061-50/+64
| |
* | More orthogonal APIAleksey Kladov2020-11-061-33/+30
| |
* | Move int parsing to IntNumber tokenAleksey Kladov2020-11-063-76/+91
| |
* | Better importsAleksey Kladov2020-11-061-11/+11
| |
* | Generate token for ints and floatsAleksey Kladov2020-11-061-0/+42
|/
* 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
| |