aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* cleanup cancellationAleksey Kladov2019-04-172-13/+6
| | | | | Now that we explicitelly exit the reading loop on exit notification, we can assume that the sender is always alive
* Merge #1153bors[bot]2019-04-174-1/+29
|\ | | | | | | | | | | | | | | | | | | 1153: "Restart server" command r=jrvidal a=jrvidal The only tricky aspect is that fact that once the `exit` command has been received, we no longer need to join on the reader thread. Also, I think `terminateProcesses.sh` was not working properly. In fact, the very same script from the vscode language server implementation is not working either! It's because of that I noticed the reader thread issue :open_mouth: Co-authored-by: Roberto Vidal <[email protected]>
| * Breaks read loop on 'exit'Roberto Vidal2019-04-163-5/+17
| |
| * Fixes doctestRoberto Vidal2019-04-161-1/+1
| |
| * PrettierRoberto Vidal2019-04-161-2/+1
| |
| * Fixes unrelated process termination quirkRoberto Vidal2019-04-161-0/+0
| |
| * Adds "restart server" commandRoberto Vidal2019-04-164-7/+24
| |
* | Merge #1157bors[bot]2019-04-177-72/+119
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1157: Add mbe stmt matcher r=matklad a=edwin0cheng Add `stmt` matcher in `ra_mbe` , and added corresponding `stmt()` parser in `ra_syntax`. This PR also help PR #1148 for `MarcoKind::Items` parsing. Note: * According [the book](https://doc.rust-lang.org/reference/macros-by-example.html), mbe `stmt` matcher will only match statement without the trailing semicolon * `item` is a valid statement. Co-authored-by: Edwin Cheng <[email protected]>
| * Add mbe stmt matcherEdwin Cheng2019-04-177-72/+119
|/
* Merge #1146bors[bot]2019-04-147-42/+91
|\ | | | | | | | | | | | | | | 1146: Moar profiling r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * fix testAleksey Kladov2019-04-141-17/+6
| |
| * add a couple of profiling pointsAleksey Kladov2019-04-144-0/+7
| |
| * more intuitive nameAleksey Kladov2019-04-141-11/+15
| |
| * filter by timeAleksey Kladov2019-04-143-28/+43
| |
| * cleanup syntaxAleksey Kladov2019-04-143-8/+34
| |
| * fast path for disabled profilerAleksey Kladov2019-04-141-8/+16
| |
| * switch to modern pathsAleksey Kladov2019-04-141-5/+5
|/
* Merge #1144bors[bot]2019-04-144-55/+176
|\ | | | | | | | | | | | | | | | | 1144: Refactor method candidate generation a bit r=flodiebold a=flodiebold This fixes the order in which candidates are chosen a bit (not completely though, as the ignored test demonstrates), and makes autoderef work with trait methods. As a side effect, this also makes completion of trait methods work :) Co-authored-by: Florian Diebold <[email protected]>
| * Refactor method candidate generation a bitFlorian Diebold2019-04-144-55/+176
|/ | | | | | This fixes the order in which candidates are chosen a bit (not completely though, as the ignored test demonstrates), and makes autoderef work with trait methods. As a side effect, this also makes completion of trait methods work :)
* Merge #1137bors[bot]2019-04-1411-63/+144
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1137: Adds support for multiple editor workspaces on initialization r=matklad a=jrvidal OK, so this "simple hack" turned out to be way more contrived than I expected :joy: ### What works This patch only handles multi-folder editor workspaces _on initialization_. * I've found that modifying the layout of a workspace in VSCode just reloads the extension, so this hack should be enough for now. * Not sure about how emacs-lsp behaves, but we fallback gracefully to the mono-folder workspace, so it should be fine. ### What doesn't work * [x] `cargo watch` can only watch a single root folder with a `Cargo.toml`. I've left this part untouched but we could either warn that it's not supported or launch _multiple_ `cargo-watch` processes. * [x] The `rust-analyzer/runnables` command is not functional, since we don't send the correct `cwd`. * [x] Should we add some happy path test to `heavy_tests`? * [ ] Going from a single `root` to multiple `roots` leaves us with a couple of `n * m` loops that smell a bit. The number of folders in the editor workspace is probably low though. Co-authored-by: Roberto Vidal <[email protected]>
| * Modifies runnables test to use multi-workspace rootRoberto Vidal2019-04-142-29/+68
| |
| * Sends cwd info for runnables and code lensesRoberto Vidal2019-04-148-5/+38
| |
| * Adds support for multiple editor workspaces on initializationRoberto Vidal2019-04-145-32/+41
| | | | | | | | This is a quick, partial fix for #1104
* | Merge #1138bors[bot]2019-04-1413-243/+560
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1138: Add L_DOLLAR and R_DOLLAR r=matklad a=edwin0cheng As discussion in issue https://github.com/rust-analyzer/rust-analyzer/issues/1132 and PR #1125 , this PR add 2 `Syntax::Kind` : `L_DOLLAR` and `R_DOLLAR` for representing `Delimiter::None` in mbe and proc_marco. By design, It should not affect the final syntax tree, and will be discard in `TreeSink`. My original idea is handling these 2 tokens case by case, but i found that they will appear in every place in the parser (imagine `tt` matcher). So this PR only handle it in `Parser::do_bump` and `Parser::start`, although It will not fix the `expr` matcher executing order problem in original idea. Co-authored-by: Edwin Cheng <[email protected]>
| * | Fix bug and add expr , pat , ty matcherEdwin Cheng2019-04-1410-33/+307
| | |
| * | Remove skip Delimiter::None and handle DollarsEdwin Cheng2019-04-125-218/+255
| | |
| * | Add L_DOLLAR and R_DOLLAREdwin Cheng2019-04-112-0/+6
| | |
* | | Merge #1120bors[bot]2019-04-1413-221/+583
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1120: More trait infrastructure r=matklad a=flodiebold This adds enough trait infrastructure to be able to make some deductions about type variables when resolving trait methods, while at the same time doing as little as possible that will be later replaced by Chalk :smile: E.g. (as the tests show) if we have ```rust trait Trait<T> { fn method(self) -> T } impl Trait<u32> for S {} ... S.method() ``` we can infer that the return type is `u32`. On the other hand the unification logic is so primitive that we can't handle e.g. `impl<T> Trait<T> for S<T>`. It's all quite hacky, I plan to refactor the parts that will stay, while hopefully the other parts will be replaced soon :slightly_smiling_face: In particular, we need to handle 'containers' (impls and trait defs) more cleanly, and I need to reorganize the method resolution / type inference code... Co-authored-by: Florian Diebold <[email protected]>
| * | Extract generic_params method to a HasGenericParams traitFlorian Diebold2019-04-147-37/+33
| | |
| * | Add Container enum to handle both kinds of container (impl/trait)Florian Diebold2019-04-144-17/+58
| | |
| * | Make callable signature handling a bit nicerFlorian Diebold2019-04-142-47/+36
| | |
| * | Some cleanupFlorian Diebold2019-04-143-98/+111
| | |
| * | More trait infrastructureFlorian Diebold2019-04-1411-51/+333
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - make it possible to get parent trait from method - add 'obligation' machinery for checking that a type implements a trait (and inferring facts about type variables from that) - handle type parameters of traits (to a certain degree) - improve the hacky implements check to cover enough cases to exercise the handling of traits with type parameters - basic canonicalization (will probably also be done by Chalk)
| * | Get substs for trait refs in impl blocksFlorian Diebold2019-04-146-44/+85
|/ /
* | Merge #1143bors[bot]2019-04-136-24/+17
|\ \ | | | | | | | | | | | | | | | | | | | | | 1143: replace usages of `algo::generate` with `iter::successors` from std r=matklad a=Robbepop Implements #1136 Co-authored-by: Robin Freyler <[email protected]>
| * | replace usages of `algo::generate` with `iter::successors` from stdRobin Freyler2019-04-136-24/+17
|/ /
* | Merge #1129bors[bot]2019-04-1328-636/+568
|\ \ | | | | | | | | | | | | | | | | | | | | | 1129: introduce SourceAnalyzer API for ides r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | cleanupsAleksey Kladov2019-04-132-13/+12
| | |
| * | slight encapsulationAleksey Kladov2019-04-132-9/+13
| | |
| * | move ScopeEntryWithSyntaxAleksey Kladov2019-04-134-37/+34
| | |
| * | drop obsolete fixmeAleksey Kladov2019-04-132-5/+4
| | |
| * | make expr scope stuff privateAleksey Kladov2019-04-131-11/+9
| | |
| * | make resolver privateAleksey Kladov2019-04-136-26/+23
| | |
| * | hide resolverAleksey Kladov2019-04-134-9/+17
| | |
| * | fold ScopeWithSyntax into SourceAnalyzerAleksey Kladov2019-04-137-193/+159
| | |
| * | make stuff privateAleksey Kladov2019-04-131-3/+3
| | |
| * | obsolete fixmAleksey Kladov2019-04-131-1/+0
| | |
| * | make privateAleksey Kladov2019-04-131-1/+1
| | |
| * | only def-with-body remainsAleksey Kladov2019-04-131-13/+3
| | |
| * | generalizeAleksey Kladov2019-04-131-15/+7
| | |