aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* 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
| |
| * simplifyAleksey Kladov2019-04-131-10/+5
| |
| * simplifyAleksey Kladov2019-04-131-7/+1
| |
| * make privateAleksey Kladov2019-04-131-1/+1
| |
| * hide some scopesAleksey Kladov2019-04-134-23/+28
| |
| * simplifyAleksey Kladov2019-04-122-17/+12
| |
| * make stuff privateAleksey Kladov2019-04-121-6/+2
| |
| * simplifyAleksey Kladov2019-04-121-54/+22
| |
| * simplify testsAleksey Kladov2019-04-123-36/+23
| |
| * use really correct resolver for expressionsAleksey Kladov2019-04-129-13/+27
| |
| * fix typoAleksey Kladov2019-04-113-6/+6
| |
| * add todoAleksey Kladov2019-04-111-0/+1
| |
| * use correct resolver for expressionsAleksey Kladov2019-04-111-3/+1
| |
| * remove resolver from CompletonContextAleksey Kladov2019-04-115-31/+9
| |
| * simplifyAleksey Kladov2019-04-111-5/+3
| |
| * generalize SourceAnalyzer to handle all defs with bodiesAleksey Kladov2019-04-113-11/+51
| |
| * minimize the APIAleksey Kladov2019-04-112-23/+11
| |
| * renameAleksey Kladov2019-04-1110-18/+18
| |
| * reduce visibilityAleksey Kladov2019-04-111-3/+3
| |
| * Make call info to use real name resolutionAleksey Kladov2019-04-114-26/+33
| |
| * introduce SourceAnalyzerAleksey Kladov2019-04-1115-187/+206
| |
* | Merge #1140bors[bot]2019-04-121-38/+38
|\ \ | |/ |/| | | | | | | | | | | 1140: :arrow_up: vfs r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * :arrow_up: vfsAleksey Kladov2019-04-121-38/+38
|/
* Merge #1133bors[bot]2019-04-111-6/+6
|\ | | | | | | | | | | | | | | 1133: fix typo r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * fix typoAleksey Kladov2019-04-111-6/+6
|/
* Merge #1131bors[bot]2019-04-1010-180/+136
|\ | | | | | | | | | | | | | | 1131: Use inline snapshots in complete_dot r=matklad a=vipentti Relates to #1127 Co-authored-by: Ville Penttinen <[email protected]>
| * Use inline snapshots in complete_dotVille Penttinen2019-04-1010-180/+136
| |
* | Merge #1130bors[bot]2019-04-104-72/+58
|\ \ | |/ |/| | | | | | | | | | | 1130: Use inline snapshots in complete_fn_param r=matklad a=vipentti Relates to #1127 Co-authored-by: Ville Penttinen <[email protected]>