aboutsummaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | | 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
| | |
* | | More idiomatic classification APIAleksey Kladov2020-10-1511-196/+196
| | |
* | | More clarificationsAleksey Kladov2020-10-156-17/+17
| | |
* | | Unconfuse expression and pattern field init shorthandsAleksey Kladov2020-10-153-8/+12
| | |
* | | Clarify NameClass names a bitAleksey Kladov2020-10-156-7/+7
| | |
* | | Merge #6242bors[bot]2020-10-152-91/+210
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6242: Diagnost shorthand in patterns r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | Move field_shorthand to a separate moduleAleksey Kladov2020-10-152-196/+211
| | | |
| * | | Diagnose shorthand in patterns as wellAleksey Kladov2020-10-151-5/+94
| | | |
| * | | flattenAleksey Kladov2020-10-151-26/+33
| | | |
| * | | Prepare for pat_field_shorthandAleksey Kladov2020-10-151-5/+13
| | | |
* | | | Merge #6234bors[bot]2020-10-151-1/+24
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6234: Fix hover over field pattern shorthand r=matklad a=Vlad-Shcherbina Instead of the information about the field, it now shows the information about the local. Fixes #6146 Co-authored-by: Vlad Shcherbina <[email protected]>
| * | | Fix hover over field pattern shorthandVlad Shcherbina2020-10-141-1/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of the information about the field, it now shows the information about the local. Fixes #6146
* | | | Document auto_import as a featureLukas Wirth2020-10-151-0/+55
| | | |
* | | | Merge #6231bors[bot]2020-10-143-190/+231
|\ \ \ \ | |_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | 6231: Factor macro_rules and format-string highlighting out into submodules r=Veykril a=Veykril This moves `format`-like macro string highlighting and macro_rules highlight skipping out of the main module. Co-authored-by: Lukas Wirth <[email protected]>