aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide_api/src
Commit message (Collapse)AuthorAgeFilesLines
...
* Merge #866bors[bot]2019-02-221-0/+20
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | 866: Implement basic support for Associated Methods r=flodiebold a=vipentti This is my attempt at learning to understand how the type inference works by adding basic support for associated methods. Currently it does not resolve associated types or constants. The basic idea is that `Resolver::resolve_path` returns a new `PathResult` type, which has two variants, `FullyResolved` and `PartiallyResolved`, fully resolved matches the previous behavior, where as `PartiallyResolved` contains the `PerNs<Resolution` in addition to a `segment_index` which contains the index of the segment which we failed to resolve. This index can then be used to continue inference in `infer_path_expr` using the `Type` we managed to resolve. This changes some of the previous apis, so looking for feedback and suggestions. This should enable fixing #832 Co-authored-by: Ville Penttinen <[email protected]>
| * Change resolve_path to return the fully resolved path or PerNs::noneVille Penttinen2019-02-222-2/+2
| | | | | | | | | | | | This also adds new pub(crate) resolve_path_segments which returns the PathResult, which may or may not be fully resolved. PathResult is also now pub(crate) since it is an implementation detail.
| * Implement basic support for Associated Methods and ConstantsVille Penttinen2019-02-213-2/+22
| | | | | | | | | | | | | | This is done in `infer_path_expr`. When `Resolver::resolve_path` returns `PartiallyResolved`, we use the returned `Resolution` together with the given `segment_index` to check if we can find something matching the segment at segment_index in the impls for that particular type.
* | Merge #864bors[bot]2019-02-211-0/+17
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 864: Fix handling of generics in tuple variants and refactor a bit r=matklad a=flodiebold (The problem was that we created separate substitutions for the return value, so we lost the connection between the type arguments in the constructor call and the type arguments of the result.) Also make them display a tiny bit nicer. Fixes #860. Co-authored-by: Florian Diebold <[email protected]> Co-authored-by: Florian Diebold <[email protected]>
| * | Fix handling of generics in tuple variants and refactor a bitFlorian Diebold2019-02-201-0/+17
| |/ | | | | | | | | | | Also make them display a tiny bit nicer. Fixes #860.
* / kill utils moduleAleksey Kladov2019-02-211-3/+2
|/
* remove ignored macro testsAleksey Kladov2019-02-191-1/+1
| | | | | we need to significantly reengineer macros, so the tests as they exist are useless
* more compact edits in instaAleksey Kladov2019-02-1855-1161/+339
|
* Don't use additional_text_edits API internallyAleksey Kladov2019-02-1856-378/+1274
|
* More orthogonal method namingAleksey Kladov2019-02-184-9/+4
|
* More compact debug representation for completionAleksey Kladov2019-02-1855-1883/+610
|
* Don't render `()` in calls to assoc functionsAleksey Kladov2019-02-173-6/+42
|
* Merge #844bors[bot]2019-02-173-34/+94
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 844: Refactor find_all_refs to return ReferenceSearchResult r=vipentti a=vipentti This refactors `find_all_refs` to return a new `ReferenceSearchResult` based on feedback in #839. There are few questions/notes regarding the refactor: 1. Introducing `NavigationTarget::from_bind_pat` this simply forwards the call to `NavigationTarget::from_named`, could we just expose `from_named` directly as `pub(crate)` ? 2. Added an utility method `NavigationTarget::range` since there were few places where you would use `self.focus_range.unwrap_or(self.full_range)` 3. Implementing `IntoIterator` for `ReferenceSearchResult`. This turns `ReferenceSearchResult` into an iterator over `FileRanges` and allows previous code to mostly stay as it was based on the order that `find_all_refs` previously had (declaration first and then the references). I'm not sure if there is a way of doing the conversion to `IntoIter` without the allocation of a new vector 4. Is it possible to have a binding without a name? I'm not sure if the `NavigationTarget::from_bind_pat` can cause some edge-cases that previously were ok This fixes #835. Co-authored-by: Ville Penttinen <[email protected]>
| * Remove leading ::Ville Penttinen2019-02-171-1/+1
| |
| * Refactor find_all_refs to return ReferenceSearchResultVille Penttinen2019-02-173-34/+94
| |
* | Unify with the autorefed/autoderefed receiver type during method resolutionFlorian Diebold2019-02-171-1/+1
|/
* Turn ImplBlock into a copy type just containing IDsFlorian Diebold2019-02-163-9/+15
| | | | | | | This makes it more like the other code model types. Also make Module::definition_source/declaration_source return HirFileIds, to make them more like the other source functions.
* document design guidelineAleksey Kladov2019-02-161-0/+6
|
* use better label for &mut ref completionAleksey Kladov2019-02-142-11/+11
|
* Merge #831bors[bot]2019-02-142-13/+84
|\ | | | | | | | | | | | | | | 831: tweak postfix completions r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * tweak postfix completionsAleksey Kladov2019-02-142-13/+60
| | | | | | | | | | * better label * add refm for &mut
| * add ref postfix templateAleksey Kladov2019-02-142-3/+27
| |
* | Be precise about the argument listJeremy Kolb2019-02-141-15/+7
|/ | | | Fixes #812
* Complete names from preludeFlorian Diebold2019-02-132-1/+74
|
* Keep track of crate editionFlorian Diebold2019-02-132-4/+5
|
* Fix possible issue where unnamed is_symbol_def would pop stack wronglyVille Penttinen2019-02-131-11/+1
| | | | This removes is_symbol_def as unnecessary.
* Use cloned over map + cloneVille Penttinen2019-02-131-1/+1
|
* Use clone directly rather than map + cloneVille Penttinen2019-02-131-1/+1
|
* Add support for container_name in workspace/symbol queryVille Penttinen2019-02-122-14/+59
|
* Filter attributes from the completion details/labelLaurențiu Nicola2019-02-123-0/+49
|
* Fix some typosPascal Hertleif2019-02-129-25/+25
|
* Implement completion for associated itemsLaurențiu Nicola2019-02-126-1/+245
|
* fix regression in self-referential completionAleksey Kladov2019-02-113-15/+32
|
* remove hard-coded query-group macroAleksey Kladov2019-02-112-43/+0
|
* use extern prelude in ResolverAleksey Kladov2019-02-112-0/+38
| | | | | | | This fixes two bugs: - completion for paths works again - we handle extern prelude shadowing more correctly
* reformat the worldAleksey Kladov2019-02-0823-274/+87
|
* diagnostics is now a functionAleksey Kladov2019-02-082-64/+62
|
* move diagnostics to a separate fileAleksey Kladov2019-02-082-27/+22
|
* move index_resolve to symbol indexAleksey Kladov2019-02-084-14/+11
|
* move find_references to referencesAleksey Kladov2019-02-083-67/+55
|
* rename rename to referencesAleksey Kladov2019-02-082-2/+2
|
* move crate forAleksey Kladov2019-02-083-16/+16
|
* move changes to a separate fileAleksey Kladov2019-02-084-254/+263
|
* Some clippy cleanupskjeremy2019-02-066-16/+17
|
* move assists to a separate crateAleksey Kladov2019-02-066-295/+24
|
* Rename assits to assistsJeremy Kolb2019-02-056-5/+5
|
* Complete extern prelude (again)Florian Diebold2019-02-042-0/+36
|
* Make it possible to have multiple crate in a mock analysis fixtureFlorian Diebold2019-02-041-2/+10
|
* make HirDatabase object-safeAleksey Kladov2019-02-032-2/+4
|
* fill match armgfreezy2019-02-036-2/+290
|