aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Parse only outer_attributes for match arms for nowVille Penttinen2019-02-173-47/+60
|
* Enable parsing of attributes inside a match blockVille Penttinen2019-02-1716-1/+589
| | | | | | | We allow invalid inner attributes to be parsed, e.g. inner attributes that are not directly after the opening brace of the match block. Instead we run validation on `MatchArmList` to allow better reporting of errors.
* Merge #844bors[bot]2019-02-176-48/+127
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-176-48/+127
| |
* | Merge #843bors[bot]2019-02-1716-84/+290
|\ \ | |/ |/| | | | | | | | | | | | | | | 843: Impl generics r=matklad a=flodiebold This handles type parameters on impls when typing method calls. ~One remaining problem is that the autoderefs aren't applied during the unification of the method receiver type with the actual receiver type, which means that the type parameters are only correctly inferred if no autoderefs happened.~ Co-authored-by: Florian Diebold <[email protected]>
| * Make GenericArgs::from_ast pub(crate)Florian Diebold2019-02-171-1/+1
| |
| * Unify with the autorefed/autoderefed receiver type during method resolutionFlorian Diebold2019-02-175-13/+55
| |
| * Handle generic args for method callsFlorian Diebold2019-02-166-11/+50
| |
| * Handle impl generics in method callsFlorian Diebold2019-02-167-77/+122
| |
| * Resolve impl generic paramsFlorian Diebold2019-02-161-1/+3
| |
| * Add generic params to impl blocksFlorian Diebold2019-02-164-9/+16
| |
| * Add a test for impl genericsFlorian Diebold2019-02-162-0/+71
|/
* Merge #842bors[bot]2019-02-169-77/+65
|\ | | | | | | | | | | | | | | | | | | | | 842: Turn ImplBlock into a copy type just containing IDs r=matklad a=flodiebold 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. Co-authored-by: Florian Diebold <[email protected]>
| * Turn ImplBlock into a copy type just containing IDsFlorian Diebold2019-02-169-77/+65
|/ | | | | | | 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.
* Merge #841bors[bot]2019-02-161-0/+139
|\ | | | | | | | | | | | | | | | | 841: Add my emacs configuration r=matklad a=flodiebold I cleaned up and extended my custom emacs code for RA a bit. This relies on emacs-lsp instead of eglot, so I didn't want to just add it to the other one. It supports some more things, though. Co-authored-by: Florian Diebold <[email protected]>
| * Add my emacs configurationFlorian Diebold2019-02-161-0/+139
|/ | | | | This relies on emacs-lsp instead of eglot, so I didn't want to just add it to the other one.
* document design guidelineAleksey Kladov2019-02-161-0/+6
|
* Merge #836bors[bot]2019-02-161-18/+67
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 836: auto_import: fix bug when the common path was shorter than both the c… r=matklad a=eulerdisk Fix bug when the common path was shorter than both the current use and target path. Wrong 1 (unnecessary self) ``` use std::fmt::nested::Debug; std::fmt::Display<|> ``` ---> ``` use std::fmt::{ self, Display, nested::Debug}; Display<|> ``` Wrong 2 (unnecessary, Debug disappear!!) ``` use std::fmt::Debug; std::fmt::nested::Display ``` --> ``` use std::fmt::Debug::{ self, nested::Display, }; Display<|> ``` Co-authored-by: Andrea Pretto <[email protected]>
| * auto_import: fix bug when the common path was shorter than both the current ↵Andrea Pretto2019-02-141-18/+67
| | | | | | | | | | | | use and target path. Shorter test names.
* | Merge #838bors[bot]2019-02-151-1/+1
|\ \ | | | | | | | | | | | | | | | | | | | | | 838: Dont slow down everyone else's testing (especially the CI) just for Mac OS X r=matklad a=pnkfelix The allowance for up to 7 events, and thus requiring anyone with fewer than 7 events to wait for the 3 second timeout, is only relevant to fsevents (i.e. Mac OS X) Co-authored-by: Felix S. Klock II <[email protected]>
| * | Dont slow down everyone else's testing (especially the CI's Linux) just for ↵Felix S. Klock II2019-02-151-1/+1
|/ / | | | | | | | | | | | | | | OS X. Namely, the allowance for up to 7 events, and thus requiring anyone with fewer than 7 events to wait for the 3 second timeout, is only relevant to fsevents (i.e. Mac OS X)
* | Merge #837bors[bot]2019-02-151-9/+67
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | 837: Generalize vfs.rs test to address fsevents timing-dependent behavior. r=matklad a=pnkfelix Generalize `tests/vfs.rs` processing to address wildly-varying timing-dependent behavior from fsevents (i.e. on Mac OS X). Fix #734 Co-authored-by: Felix S. Klock II <[email protected]>
| * | Generalize `tests/vfs.rs` processing to address wildly-varying ↵Felix S. Klock II2019-02-151-9/+67
|/ / | | | | | | time-dependent behavior on Mac OS X.
* | Merge #830bors[bot]2019-02-141-1/+3
|\ \ | |/ |/| | | | | | | | | | | | | | | | | 830: Fix test_vfs_works failing on Windows due to extra Write events r=pnkfelix a=vipentti On Windows `notify` generates extra `Write` events for folders, which caused `process_tasks` to not handle all tasks generated on Windows. This fixes #827 Co-authored-by: Ville Penttinen <[email protected]>
| * Fix test_vfs_works failing on Windows due to extra Write eventsVille Penttinen2019-02-141-1/+3
| | | | | | | | | | | | | | On Windows `notify` generates extra `Write` events for folders, which caused `process_tasks` to not handle all tasks generated on Windows. This fixes #827
* | Merge #834bors[bot]2019-02-142-11/+11
|\ \ | | | | | | | | | | | | | | | | | | | | | 834: use better label for &mut ref completion r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | use better label for &mut ref completionAleksey Kladov2019-02-142-11/+11
| | |
* | | Merge #833bors[bot]2019-02-1410-153/+119
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | | | | | | | 833: automatically wait for worker threads r=matklad a=matklad closes #817 Co-authored-by: Aleksey Kladov <[email protected]>
| * | simplifyAleksey Kladov2019-02-142-86/+71
| | |
| * | automatically wait for worker threadsAleksey Kladov2019-02-1410-152/+133
|/ / | | | | | | closes #817
* | 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
| |/
* | Merge #829bors[bot]2019-02-141-15/+7
|\ \ | |/ |/| | | | | | | | | | | 829: Be precise about the argument list r=matklad a=kjeremy Fixes #812 Co-authored-by: Jeremy Kolb <[email protected]>
| * Be precise about the argument listJeremy Kolb2019-02-141-15/+7
|/ | | | Fixes #812
* Merge #825bors[bot]2019-02-141-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | 825: Remove call to canonicalize in BatchDatabase::load_cargo r=matklad a=vipentti Instead of using canonicalize, we now join the given path to `std::env::current_dir()`, which either replaces the path, if the given path is absolute, or joins the paths. This fixes #821. Co-authored-by: Ville Penttinen <[email protected]>
| * Remove call to canonicalize in BatchDatabase::load_cargoVille Penttinen2019-02-141-1/+1
|/ | | | | | | | Instead of using canonicalize, we now join the given path to `std::env::current_dir()`, which either replaces the path, if the given path is absolute, or joins the paths. This fixes #821.
* Merge #818bors[bot]2019-02-131-2/+15
|\ | | | | | | | | | | | | | | | | | | 818: In `RootConfig::contains`, check against canonicalized version of root path r=matklad a=pnkfelix In `RootConfig::contains`, check against canonicalized version of root path since OS may hand us data that uses the canonical form rather than the root as specified by the user. This is a step towards a resolution of issue #734 but does not completely fix the problem there. Co-authored-by: Felix S. Klock II <[email protected]>
| * rustfmtFelix S. Klock II2019-02-131-3/+3
| |
| * In `RootConfig::contains`, check against canonicalized version of rootFelix S. Klock II2019-02-131-2/+15
| | | | | | | | | | path since OS may hand us data that uses that rather than the root as specified by the user.
* | Merge #816bors[bot]2019-02-1318-60/+399
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 816: Prelude & Edition 2015 import resolution r=matklad a=flodiebold I implemented the prelude import, but it turned out to be useless without being able to resolve any of the imports in the prelude :sweat_smile: So I had to add some edition handling and handle 2015-style imports (at least the simplified scheme proposed in rust-lang/rust#57745). So now finally `Option` resolves :smile: One remaining problem is that we don't actually know the edition for sysroot crates. They're currently hardcoded to 2015, but there's already a bunch of PRs upgrading the editions of various rustc crates, so we'll have to detect the edition somehow, or just change the hardcoding to 2018 later, I guess... ~Also currently missing is completion for prelude names, though that shouldn't be hard to add. And `Vec` still doesn't resolve, so I need to look into that.~ Co-authored-by: Florian Diebold <[email protected]>
| * | Complete names from preludeFlorian Diebold2019-02-134-5/+84
| | |
| * | Handle extern crates better, so they work correctly in 2015 editionFlorian Diebold2019-02-133-15/+55
| | | | | | | | | | | | (see the removed comment.)
| * | Make edition handling a bit nicer and allow specifying edition in ↵Florian Diebold2019-02-135-25/+28
| | | | | | | | | | | | crate_graph macro
| * | Resolve 2015 style importsFlorian Diebold2019-02-134-8/+118
| | |
| * | Keep track of crate editionFlorian Diebold2019-02-138-24/+44
| | |
| * | Import the preludeFlorian Diebold2019-02-137-12/+99
|/ /
* | Merge #813bors[bot]2019-02-134-17/+100
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 813: Add support for container_name in workspace/symbol query r=matklad a=vipentti Currently this does not fill in the container_info if a type is defined on the top level in a file. e.g. `foo.rs` ```rust enum Foo { } ``` `Foo` will have None as the container_name, however ```rust mod foo_mod { enum Foo { } } ``` `Foo` has `foo_mod` as the container_name. This closes #559 Co-authored-by: Ville Penttinen <[email protected]>
| * | Fix possible issue where unnamed is_symbol_def would pop stack wronglyVille Penttinen2019-02-131-11/+1
| | | | | | | | | | | | This removes is_symbol_def as unnecessary.