aboutsummaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | | | Merge #6314bors[bot]2020-10-221-2/+40
|\ \ \ \ \ \ | |/ / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6314: generate assist respect cfg attributes r=matklad a=bnjjj close #6312 Co-authored-by: Benjamin Coenen <[email protected]>
| * | | | | generate_impl assist respect cfg attributes #6312Benjamin Coenen2020-10-221-2/+40
| |/ / / / | | | | | | | | | | | | | | | Signed-off-by: Benjamin Coenen <[email protected]>
* | | | | Merge #6307bors[bot]2020-10-213-2/+99
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6307: Add whitelist of safe intrinsics r=frazar a=frazar This PR should fix #5996, where intrinsic operations where all marked as unsafe. I'm rather new to this codebase, so I might be doing something *very* wrong. Please forgive me! In particular, I'm not sure how to "check that we are in extern `rust-intrinsics`" as mentioned [in this comment](https://github.com/rust-analyzer/rust-analyzer/issues/5996#issuecomment-709234802). Co-authored-by: Francesco Zardi <[email protected]>
| * | | | Refactor is_intrinsic_fn_unsafe() and make it privateFrancesco Zardi2020-10-211-39/+42
| | | | |
| * | | | Move safe intrinsic testsFrancesco Zardi2020-10-212-20/+18
| | | | |
| * | | | Fix typo in commentFrancesco Zardi2020-10-211-1/+1
| | | | |
| * | | | Add whitelist of safe intrinsicsFrancesco Zardi2020-10-213-2/+98
| | | | |
* | | | | Update cratesJeremy Kolb2020-10-203-3/+3
| | | | | | | | | | | | | | | | | | | | This brings in a number of new dependencies though.
* | | | | add completions for clippy lint in attributesBenjamin Coenen2020-10-204-132/+10
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Benjamin Coenen <[email protected]>
* | | | | Merge #6256bors[bot]2020-10-203-0/+160
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6256: Assist: replace string with char r=bnjjj a=bnjjj close #6252 Co-authored-by: Benjamin Coenen <[email protected]> Co-authored-by: Coenen Benjamin <[email protected]>
| * | | | | Update crates/assists/src/handlers/replace_string_with_char.rsCoenen Benjamin2020-10-201-1/+1
| | | | | | | | | | | | | | | | | | Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | | Assist: replace string with charBenjamin Coenen2020-10-202-8/+39
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Benjamin Coenen <[email protected]>
| * | | | | replace_string_with_char #6252Benjamin Coenen2020-10-162-0/+129
| | |_|_|/ | |/| | | | | | | | | | | | | Signed-off-by: Benjamin Coenen <[email protected]>
* | | | | Merge #6172bors[bot]2020-10-206-24/+1090
|\ \ \ \ \ | |_|_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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]>
| * | | | De-duplicate `add_group` callsite in qualify_pathLukas Wirth2020-10-161-121/+108
| | | | |
| * | | | Properly qualify trait methods in qualify_path assistLukas Wirth2020-10-155-70/+118
| | | | |
| * | | | Add mark tests to qualify_path assistLukas Wirth2020-10-141-0/+9
| | | | |
| * | | | Add qualify path assistLukas Wirth2020-10-142-0/+1022
| | | | |
* | | | | Merge #6299bors[bot]2020-10-208-67/+141
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6299: Diagnose items that are #[cfg]d out r=jonas-schievink a=jonas-schievink This emits a hint-level diagnostic with `Unnecessary` tag to "gray out" any items whose `#[cfg]` attributes remove the item before name resolution. Co-authored-by: Jonas Schievink <[email protected]>
| * | | | | Fixup botched renameJonas Schievink2020-10-201-1/+1
| | | | | |
| * | | | | More detailed messageJonas Schievink2020-10-201-1/+1
| | | | | |
| * | | | | Rename UnconfiguredCode -> InactiveCodeJonas Schievink2020-10-203-5/+5
| | | | | |
| * | | | | Add a (hint) diagnostic for unconfigured itemsJonas Schievink2020-10-206-3/+86
| | | | | |
| * | | | | Simplify diagnostic construction, add unused fieldJonas Schievink2020-10-203-64/+55
| | | | | |
* | | | | | Don't rely on display names in inlay_hintsAleksey Kladov2020-10-204-19/+29
|/ / / / /
* | | | | Support Display name in project.jsonAleksey Kladov2020-10-202-3/+7
| | | | |
* | | | | More type safety around namesAleksey Kladov2020-10-206-19/+33
| | | | |
* | | | | Introduce CrateDisplayNameAleksey Kladov2020-10-201-1/+23
| | | | |
* | | | | Rename declaration_name -> display_nameAleksey Kladov2020-10-2011-35/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Declaration names sounds like a name of declaration -- something you can use for analysis. It empathically isn't, and is just a label displayed in various UI. It's important not to confuse the two, least we accidentally mix semantics with UI (I believe, there's already a case of this in the FamousDefs at least).
* | | | | Merge #6294bors[bot]2020-10-202-0/+28
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6294: Add a hacky remidy for #6038 r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | | Add a hacky remidy for #6038Aleksey Kladov2020-10-202-0/+28
| | |_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | The proper fix I think is: * move rust-lang/rust library crates to a separate workspace * when packaging rust-src component, vendor sources of external deps
* / | | | Add descriptions for diagnostics parseable by xtaskIgor Aleksanov2020-10-192-0/+64
|/ / / /
* | | | Minor, rename featureAleksey Kladov2020-10-191-1/+1
| | | |
* | | | Try to fix publishingAleksey Kladov2020-10-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This errro specifically: Updating crates.io index error: failed to select a version for the requirement `ra_ap_stdx = "^0.0.0"` candidate versions found which didn't match: 0.0.20 location searched: /home/runner/work/rust-analyzer/rust-analyzer/crates/stdx required by package `ra_ap_completion v0.0.20 (/home/runner/work/rust-analyzer/rust-analyzer/crates/completion)` error: unable to update Cargo.lock Error: Process completed with exit code 1.
* | | | Change visibility works for type aliasesAleksey Kladov2020-10-182-5/+19
| | | |
* | | | Extract call_info and completion into separate cratesIgor Aleksanov2020-10-1832-226/+300
| | | |
* | | | update depsAleksey Kladov2020-10-181-1/+1
| | | |
* | | | Complete methods when receiver is a macroAleksey Kladov2020-10-172-0/+16
| | | |
* | | | Improve readabilityAleksey Kladov2020-10-171-2/+4
| | | |
* | | | Scan all ancestors for the impl trait block checkIgor Aleksanov2020-10-172-14/+17
| | | |
* | | | Allow hints after 'fn' keyword if it's an impl trait blockIgor Aleksanov2020-10-173-4/+37
| | | |
* | | | Add test for new pattern functionsIgor Aleksanov2020-10-171-0/+8
| | | |
* | | | Improve test_no_completions_required testIgor Aleksanov2020-10-171-1/+17
| | | |
* | | | Remove redundant completionsIgor Aleksanov2020-10-173-4/+70
| |/ / |/| |
* | | Merge #6246bors[bot]2020-10-161-8/+9
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6246: Follow symlinks when walking project trees r=lnicola a=dfoxfranke Fixes #3691. ~~WIP pending further testing~~: - [X] Verify that symlinked files get indexed. - [x] Verify that files in symlinked directories get indexed. - [x] Verify that inotify events are properly received and handled when the target of a symlink resides outside the project tree. Co-authored-by: Daniel Fox Franke <[email protected]>
| * | Follow symlinks when walking project treesDaniel Fox Franke2020-10-151-8/+9
| |/ | | | | | | Fixes #3691
* | Merge #6220bors[bot]2020-10-153-5/+126
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6220: implement binary operator overloading type inference r=flodiebold a=ruabmbua Extend type inference of *binary operator expression*, by adding support for operator overloads. Before this merge request, the type inference of binary expressions could only resolve operations done on built-in primitive types. This merge requests adds a code path, which is executed in case the built-in inference could not get any results. It resolves the proper operator overload trait in *core::ops* via lang items, and then resolves the associated *Output* type. ```rust struct V2([f32; 2]); #[lang = "add"] pub trait Add<Rhs = Self> { /// The resulting type after applying the `+` operator. type Output; /// Performs the `+` operation. #[must_use] fn add(self, rhs: Rhs) -> Self::Output; } impl Add<V2> for V2 { type Output = V2; fn add(self, rhs: V2) -> V2 { let x = self.0[0] + rhs.0[0]; let y = self.0[1] + rhs.0[1]; V2([x, y]) } } fn test() { let va = V2([0.0, 1.0]); let vb = V2([0.0, 1.0]); let r = va + vb; // This infers to V2 now } ``` There is a problem with operator overloads, which do not explicitly set the *Rhs* type parameter in the respective impl block. **Example:** ```rust impl Add for V2 { type Output = V2; fn add(self, rhs: V2) -> V2 { let x = self.0[0] + rhs.0[0]; let y = self.0[1] + rhs.0[1]; V2([x, y]) } } ``` In this case, the trait solver does not realize, that the *Rhs* type parameter is actually self in the context of the impl block. This stops type inference in its tracks, and it can not resolve the associated *Output* type. I guess we can still merge this back, because it increases the amount of resolved types, and does not regress anything (in the tests). Somewhat blocked by https://github.com/rust-analyzer/rust-analyzer/issues/5685 Resolves https://github.com/rust-analyzer/rust-analyzer/issues/5544 Co-authored-by: Roland Ruckerbauer <[email protected]>
| * | binary operator overload type inference: add test markRoland Ruckerbauer2020-10-142-0/+6
| | |
| * | Implement binary operator overloading type inferenceRoland Ruckerbauer2020-10-133-5/+120
| | |
* | | Clarify the names one more timeAleksey Kladov2020-10-157-17/+26
| | |