aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Merge #866bors[bot]2019-02-2210-31/+430
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | 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-225-36/+38
| | | | | | | | | | | | 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.
| * Ignore failing test for nowVille Penttinen2019-02-211-0/+1
| |
| * Make nameres::ResolvePathResult private and refactorVille Penttinen2019-02-211-7/+7
| |
| * Remove Const inference for now, refactor PathResultVille Penttinen2019-02-214-77/+93
| |
| * Implement basic support for Associated Methods and ConstantsVille Penttinen2019-02-2113-50/+430
| | | | | | | | | | | | | | 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-216-42/+124
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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]>
| * | Add an assert (and fix the other)Florian Diebold2019-02-211-1/+2
| | |
| * | Fix handling of generics in tuple variants and refactor a bitFlorian Diebold2019-02-206-41/+122
| |/ | | | | | | | | | | Also make them display a tiny bit nicer. Fixes #860.
* | Merge #876bors[bot]2019-02-214-10/+143
|\ \ | | | | | | | | | | | | | | | | | | | | | 876: Fix join_lines not adding a comma after join_single_expr_block with match arm r=matklad a=vipentti Fixes #868 Co-authored-by: Ville Penttinen <[email protected]>
| * | Move `non_trivia_sibling` to `ra_syntax::algo`Ville Penttinen2019-02-214-15/+13
| | |
| * | Simplify adding a comma after match armVille Penttinen2019-02-211-28/+18
| | |
| * | Fix join_lines not adding a comma after join_single_expr_block in match armVille Penttinen2019-02-211-2/+147
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We will also remove optional whitespace between the expression and the comma. e.g. ```rust fn foo() { let x = (<|>{ 4 } ,); // NOTE: whitespace } ``` becomes ```rust fn foo() { let x = (<|>4,); } ```
* | | Merge #874bors[bot]2019-02-214-11/+11
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 874: Update lsp-types and backtrace r=matklad a=kjeremy Co-authored-by: kjeremy <[email protected]>
| * | | Update lsp-types and backtracekjeremy2019-02-214-11/+11
|/ / /
* | | Merge #873bors[bot]2019-02-211-0/+173
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | 873: add API guide to ra_syntax r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | add API guide to ra_syntaxAleksey Kladov2019-02-211-0/+173
|/ /
* | Merge #872bors[bot]2019-02-2110-175/+168
|\ \ | | | | | | | | | | | | | | | | | | | | | 872: simplify trait bounds r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | simplify trait boundsAleksey Kladov2019-02-211-12/+18
| | |
| * | rearrange methodsAleksey Kladov2019-02-211-67/+67
| | |
| * | kill utils moduleAleksey Kladov2019-02-2110-114/+101
|/ /
* | Merge #871bors[bot]2019-02-212-521/+1
|\ \ | | | | | | | | | | | | | | | | | | | | | 871: Ignore lockfile in fuzz r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | Ignore lockfile in fuzzAleksey Kladov2019-02-212-521/+1
| | | | | | | | | | | | It's too much trouble maintaining it
* | | Merge #870bors[bot]2019-02-2111-98/+143
|\| | | | | | | | | | | | | | | | | | | | | | | 870: docs r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | docsAleksey Kladov2019-02-2111-98/+143
|/ /
* | add failing testAleksey Kladov2019-02-211-0/+23
| |
* | Merge #867bors[bot]2019-02-2132-74/+127
|\ \ | | | | | | | | | | | | | | | | | | | | | 867: This moves the parser to separate crate r=matklad a=matklad That makes parser independent form both the token and the tree representation. Co-authored-by: Aleksey Kladov <[email protected]>
| * | fix the testAleksey Kladov2019-02-212-4/+4
| | |
| * | fix compilationAleksey Kladov2019-02-219-59/+39
| | |
| * | move parser to a separate crateAleksey Kladov2019-02-2124-18/+91
|/ /
* | Merge #865bors[bot]2019-02-216-203/+178
|\ \ | |/ |/| | | | | | | | | | | 865: Parser decoupling r=matklad a=matklad More work on making parser independent from text Co-authored-by: Aleksey Kladov <[email protected]>
| * make grammar independent of syntax treeAleksey Kladov2019-02-212-14/+18
| |
| * minorAleksey Kladov2019-02-211-1/+1
| |
| * move whitespace handling to tree builderAleksey Kladov2019-02-214-188/+159
|/
* Merge #863bors[bot]2019-02-2010-358/+245
|\ | | | | | | | | | | | | | | 863: Token source r=matklad a=matklad Some reshuffling of parser's API with the eye towards extracting parse **without** syntax tree into a separate crate, to be used with macro expansion Co-authored-by: Aleksey Kladov <[email protected]>
| * move syntax error to parserAleksey Kladov2019-02-206-25/+24
| |
| * simplifyAleksey Kladov2019-02-205-29/+4
| |
| * remove TokenPosAleksey Kladov2019-02-203-49/+28
| |
| * flattern module structureAleksey Kladov2019-02-205-14/+30
| |
| * merge parse_impl and parser_apiAleksey Kladov2019-02-202-171/+102
| |
| * fix off by one errorAleksey Kladov2019-02-201-1/+1
| |
| * move abstract traits to topAleksey Kladov2019-02-204-65/+59
| |
| * switch to dynamic dispatch for TokenSourceAleksey Kladov2019-02-202-9/+7
| | | | | | | | | | | | | | | | | | | | | | Benchmarks show no difference. This is probably because we are bottlenecked on memory allocations, and we should fix that, but we are not optimizing for performance just yet. changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # # On branch token-source # Changes to be committed: # modified: crates/ra_syntax/src/parsing/parser_api.rs # modified: crates/ra_syntax/src/parsing/parser_impl.rs #
| * route parsing via TokenSource traitAleksey Kladov2019-02-203-64/+59
| |
| * rename Sink -> TreeSinkAleksey Kladov2019-02-203-8/+8
|/
* Merge #861bors[bot]2019-02-2041-140/+174
|\ | | | | | | | | | | | | | | 861: Move parsing to a separate module r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * fix testsAleksey Kladov2019-02-203-5/+8
| |
| * rearrange modules in a suggestd reading orderAleksey Kladov2019-02-202-9/+10
| |
| * flatten modulesAleksey Kladov2019-02-2015-40/+37
| |
| * move reparsers to grammarAleksey Kladov2019-02-202-33/+27
| |