aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* | Merge #1291bors[bot]2019-05-203-21/+33
|\ \ | | | | | | | | | | | | | | | | | | | | | 1291: add is_union to structs AST r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | add is_union to structs ASTAleksey Kladov2019-05-201-1/+17
| | |
| * | remove minor code duplicationAleksey Kladov2019-05-202-20/+16
|/ /
* | Merge #1289bors[bot]2019-05-201-38/+39
|\ \ | | | | | | | | | | | | | | | | | | | | | 1289: simplify r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | simplifyAleksey Kladov2019-05-201-38/+39
| | |
* | | Merge #1287bors[bot]2019-05-202-1/+19
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1287: Add support of matching literal in mbe r=matklad a=edwin0cheng This PR adds support of matching literal in mbe , which used in our `T` macro : ```rust macro_rules! foo { ('(') => { fn foo() {} } } ``` Co-authored-by: Edwin Cheng <[email protected]>
| * | Fix match literalEdwin Cheng2019-05-202-1/+19
| | |
* | | Merge #1288bors[bot]2019-05-201-1/+4
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | 1288: output the progress for real r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | output the progress for realAleksey Kladov2019-05-201-1/+4
|/ /
* | Merge #1286bors[bot]2019-05-205-17/+86
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1286: Add infer for generic default type r=flodiebold a=edwin0cheng This PR add infer support for generic default type: ``` struct Gen<T=u32> { val: T } ``` * add the (unresolved) defaults from the definition to GenericParams * add a query generic_defaults that resolves those defaults to types and returns a Substs * add the missing type in `substs_from_path_segment` * add tests based on the idea in this [comment](https://github.com/rust-analyzer/rust-analyzer/issues/1099#issuecomment-484206279) Co-authored-by: Edwin Cheng <[email protected]>
| * | Use normal iteration instead of walk_mutEdwin Cheng2019-05-201-8/+5
| | |
| * | Add infer for generic default typeEdwin Cheng2019-05-194-15/+80
| | |
| * | Add default type to GenericParamEdwin Cheng2019-05-191-3/+10
| |/
* | Merge #1284bors[bot]2019-05-181-3/+4
|\ \ | | | | | | | | | | | | | | | | | | | | | 1284: Assert that DB is unwind-safe, instead of proving r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | Assert that DB is unwind-safe, instead of provingAleksey Kladov2019-05-181-3/+4
|/ / | | | | | | | | | | | | | | | | | | | | | | | | Unfortunately, that `: RefUnwindSafe` bound gives rustc a hard time, so let's remove it for know. See * https://github.com/rust-analyzer/rust-analyzer/issues/1283 * https://github.com/rust-lang/rust/pull/60444 * https://github.com/rust-lang/rust/issues/58291 closes #1283
* | Merge #1280bors[bot]2019-05-153-46/+33
|\ \ | | | | | | | | | | | | | | | | | | | | | 1280: :arrow_up: text_unit r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | :arrow_up: text_unitAleksey Kladov2019-05-153-46/+33
|/ /
* | Merge #1278bors[bot]2019-05-1540-626/+622
|\ \ | |/ |/| | | | | | | | | | | 1278: Apply T! macro where posible r=matklad a=pasa apply T! macro implemented in #1248 Co-authored-by: Sergey Parilin <[email protected]>
| * apply T! macro where it is possibleSergey Parilin2019-05-1538-623/+619
| |
| * fixed macro for bracketsSergey Parilin2019-05-152-3/+3
|/
* Merge #1273bors[bot]2019-05-142-3/+8
|\ | | | | | | | | | | | | | | 1273: show current function in analysis-stats progress bar r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * show current function in analysis-stats progress barAleksey Kladov2019-05-142-3/+8
|/
* Merge #1267bors[bot]2019-05-149-43/+68
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1267: Macro expand to r=edwin0cheng a=matklad closes #1264 The core problem this PR is trying to wrangle is that macros can expand to different stuffs, depending on context. That is, `foo!()` on the top-level expands to a list of items, but the same `foo!()` in expression position expands to expression. Our current `hir_parse(HirFileId) -> TreeArc<SourceFile>` does not really support this. So, the plan is to change `hir_parse` to untyped inreface (`TreeArc<Syntaxnode>`), and add `expands_to` field to `MacroCallLoc`, such that the *target* of macro expansion is selected by the calling code and is part of macro id. This unfortunately looses some type-safety :( Moreover, this doesn't really fix #1264 by itself, because we die due to some other error inside macro expansion: expander fails to produce a tree with a single root, which trips assert inside rowan. Co-authored-by: Aleksey Kladov <[email protected]>
| * allow expanding expressionsAleksey Kladov2019-05-142-7/+8
| |
| * expand to syntax nodeAleksey Kladov2019-05-146-26/+33
| |
| * store macro kind in HirFileIdAleksey Kladov2019-05-144-21/+38
|/
* Merge #1272bors[bot]2019-05-141-0/+46
|\ | | | | | | | | | | | | | | | | | | 1272: Error out non single root token tree conversion r=matklad a=edwin0cheng This PR add a check to prevent non single root token tree conversion between token trees and syntax tree. It should prevent the assert produced in #1267. Co-authored-by: Edwin Cheng <[email protected]>
| * Error out non single root token tree conversionEdwin Cheng2019-05-141-0/+46
| |
* | Merge #1271bors[bot]2019-05-1311-24/+29
|\ \ | | | | | | | | | | | | | | | | | | | | | 1271: make AstId untyped r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | make AstId untypedAleksey Kladov2019-05-1311-24/+29
| | |
* | | Merge #1270bors[bot]2019-05-131-1/+1
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | | | | | | | 1270: Increase Chalk solver max_size back to 4 r=flodiebold a=flodiebold Reducing it to 2 was just a failed attempt to see whether that would help fix some slow cases; in fact, it can create new slow cases by replacing concrete types by variables. Co-authored-by: Florian Diebold <[email protected]>
| * | Increase Chalk solver max_size back to 4Florian Diebold2019-05-131-1/+1
|/ / | | | | | | | | | | Reducing it to 2 was just a failed attempt to see whether that would help fix some slow cases; in fact, it can create new slow cases by replacing concrete types by variables.
* | Merge #1257bors[bot]2019-05-136-1/+114
|\ \ | |/ |/| | | | | | | | | | | 1257: Implemented tkn! macro for syntax kinds r=matklad a=pasa Implementation of #1248 Co-authored-by: Sergey Parilin <[email protected]>
| * Implemented T! macro for syntax kindsSergey Parilin2019-05-136-1/+114
| |
* | Merge #1268bors[bot]2019-05-125-38/+15
|\ \ | | | | | | | | | | | | | | | | | | | | | 1268: simplify r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | simplifyAleksey Kladov2019-05-125-34/+12
| | |
| * | simplifyAleksey Kladov2019-05-122-8/+7
|/ /
* | Merge #1266bors[bot]2019-05-124-26/+83
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1266: Chalk integration / method resolution fixes r=matklad a=flodiebold - fix impl blocks with unresolved target trait being treated as inherent impls - add traits from prelude for method resolution, and deduplicate them - blacklist some traits from being considered in where clauses, namely `Send`, `Sync`, `Sized`, and the `Fn` traits. We don't handle these correctly yet for several reasons, and this makes us much less likely to run into cases where Chalk gets very slow (because these usually only happen if there is no solution, and that's more likely to happen for these traits). - when there's an errored where clause, return just that one (since it will be always false anyway). This also makes things easier on Chalk ;) Co-authored-by: Florian Diebold <[email protected]>
| * | Use traits from prelude for method resolutionFlorian Diebold2019-05-123-14/+42
| | |
| * | Blacklist some traits from being considered in where clausesFlorian Diebold2019-05-122-7/+34
| | | | | | | | | | | | | | | | | | | | | For Send/Sync/Sized, we don't handle auto traits correctly yet and because they have a lot of impls, they can easily lead to slowdowns. In the case of Fn/FnMut/FnOnce, we don't parse the special Fn notation correctly yet and don't handle closures yet, so we are very unlikely to find an impl.
| * | Fix impl blocks with unresolved target trait being treated as inherent implsFlorian Diebold2019-05-121-5/+7
|/ /
* | Merge #1265bors[bot]2019-05-122-34/+7
|\ \ | | | | | | | | | | | | | | | | | | | | | 1265: drop obsolete render test subcommand r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | drop obsolete render test subcommandAleksey Kladov2019-05-121-30/+1
| | |
| * | allow to specify path in analysis-statsAleksey Kladov2019-05-122-4/+6
| | |
* | | Merge #1262bors[bot]2019-05-1212-56/+416
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1262: Where clauses and other Chalk improvements r=matklad a=flodiebold This adds support for where clauses to the Chalk integration; it also adds FnDef lowering and partly handles auto traits. One thing I'm not sure about is the error handling -- what do we do if we can't resolve a trait reference in a where clause? For impls, I think it's clear we need to disregard the impl for trait solving. I've solved this for now by introducing an 'unknown trait' that has no impls, so if we encounter an unknown trait we can use that and basically get a where clause that's always false. (The alternative would be somehow not returning the impl to Chalk at all, but we would need to know that we need to do that in `impls_for_trait` already, and we don't resolve anything there.) A bit surprisingly, this has almost no impact on the type inference stats for RA, probably because of missing edge cases. Probably impl Trait support and closure support will do more. Co-authored-by: Florian Diebold <[email protected]>
| * | Add support for inline boundsFlorian Diebold2019-05-112-16/+60
| | | | | | | | | | | | E.g. impl<T: Clone> Foo for T.
| * | Handle auto traits & negative implsFlorian Diebold2019-05-115-7/+47
| | | | | | | | | | | | | | | We don't pass field types to Chalk yet though, so the auto trait inference won't be correct.
| * | Reduce Chalk max_size parameter, add test for slow caseFlorian Diebold2019-05-113-3/+42
| | |
| * | Handle Chalk conversion for FnDefFlorian Diebold2019-05-113-2/+39
| | |
| * | Handle resolution errors in where clausesFlorian Diebold2019-05-112-15/+56
| | | | | | | | | | | | | | | This is slightly hacky, but maybe more elegant than alternative solutions: We just use a hardcoded Chalk trait ID which we special-case to have no impls.