aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_ty
Commit message (Collapse)AuthorAgeFilesLines
* Implement inline associated type boundsFlorian Diebold2020-04-132-6/+69
| | | | | | | Like `Iterator<Item: SomeTrait>`. This is an unstable feature, but it's used in the standard library e.g. in the definition of Flatten, so we can't get away with not implementing it :)
* Merge #3938bors[bot]2020-04-122-12/+253
|\ | | | | | | | | | | | | | | | | | | 3938: fix missing match arm false positive r=flodiebold a=JoshMcguigan This fixes #3932 by skipping the missing match arm diagnostic in the case any of the match arms don't type check properly against the match expression. I think this is the appropriate behavior for this diagnostic, since `is_useful` relies on all match arms being well formed, and the case of a malformed match arm should probably be handled by a different diagnostic. Co-authored-by: Josh Mcguigan <[email protected]>
| * missing match arm add test cases to demonstrate enum tuple struct with ↵Josh Mcguigan2020-04-121-0/+64
| | | | | | | | ellipsis behavior
| * missing match arms add test cases to demonstrate behavior of tuple with patternJosh Mcguigan2020-04-121-0/+75
| |
| * missing match arm add test for partially diverging typeJosh Mcguigan2020-04-111-0/+21
| |
| * missing match arms add tests for match expression divergingJosh Mcguigan2020-04-111-0/+77
| |
| * fix match arm false positiveJosh Mcguigan2020-04-112-12/+16
| |
* | Align grammar for record patterns and literalsAleksey Kladov2020-04-111-1/+2
| | | | | | | | | | | | The grammar now looks like this [name_ref :] pat
* | Merge #3951bors[bot]2020-04-112-33/+26
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | 3951: Simplify records grammar r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | Remove dead codeAleksey Kladov2020-04-112-33/+26
| |/
* / Look up impls by self typeFlorian Diebold2020-04-114-14/+65
|/ | | | | This speeds up inference in analysis-stats by ~30% (even more with the recursive solver).
* Forward compatAleksey Kladov2020-04-103-9/+9
|
* Add failing testAleksey Kladov2020-04-101-2/+29
|
* Merge #3905bors[bot]2020-04-104-28/+149
|\ | | | | | | | | | | | | | | | | | | | | | | 3905: add ellipsis field to hir pat record r=matklad a=JoshMcguigan This PR corrects a `fixme`, adding an `ellipsis` field to the hir `Pat::Record` type. It will also be unlock some useful follow on work for #3894. Additionally it adds a diagnostic for missing fields in record patterns. ~~Marking as a draft because I don't have any tests, and a small amount of manual testing on my branch from #3894 suggests it might *not* be working. Any thoughts on how I can best test this, or else pointers on where I might be going wrong?~~ Co-authored-by: Josh Mcguigan <[email protected]>
| * add record pat missing field diagnosticJosh Mcguigan2020-04-104-28/+149
| |
* | Implement Chalk's debug methods using TLSFlorian Diebold2020-04-105-56/+297
|/ | | | | | | | | | Chalk now panics if we don't implement these methods and run with CHALK_DEBUG, so I thought I'd try to implement them 'properly'. Sadly, it seems impossible to do without transmuting lifetimes somewhere. The problem is that we need a `&dyn HirDatabase` to get names etc., which we can't just put into TLS. I thought I could just use `scoped-tls`, but that doesn't support references to unsized types. So I put the `&dyn` into another struct and put the reference to *that* into the TLS, but I have to transmute the lifetime to 'static for that to work.
* Simpler acessors for keywordsAleksey Kladov2020-04-091-2/+2
|
* Merge #3918bors[bot]2020-04-091-0/+60
|\ | | | | | | | | | | | | | | | | 3918: Add support for feature attributes in struct literal r=matklad a=bnjjj As promised here is the next PR to solve 2 different scenarios with feature flag on struct literal. close #3870 Co-authored-by: Benjamin Coenen <[email protected]>
| * feat: add support for feature attributes in struct literalBenjamin Coenen2020-04-091-3/+3
| |\ | | | | | | | | | Signed-off-by: Benjamin Coenen <[email protected]>
| * | feat: add support for feature attributes in struct literalBenjamin Coenen2020-04-091-0/+60
| | | | | | | | | | | | Signed-off-by: Benjamin Coenen <[email protected]>
* | | Add _token suffix to token accessorsAleksey Kladov2020-04-091-1/+1
| |/ |/| | | | | | | I think this makes is more clear which things are : AstNode and which are : AstToken
* | Provide more complete AST accessors to support usage in rustcLuca Barbieri2020-04-091-2/+2
|/
* feat: add attributes support on struct fields and method #3870Benjamin Coenen2020-04-093-83/+151
|\ | | | | | | Signed-off-by: Benjamin Coenen <[email protected]>
| * match checking add additional test for match checking tuple with missing patternJosh Mcguigan2020-04-081-0/+14
| |
| * fix panic in match checking when tuple enum missing patternJosh Mcguigan2020-04-081-15/+45
| |
| * Move computation of missing fields into hirAleksey Kladov2020-04-071-67/+91
| |
* | feat: add attributes support on struct fields and method #3870Benjamin Coenen2020-04-082-12/+6
| | | | | | | | Signed-off-by: Benjamin Coenen <[email protected]>
* | Merge branch 'master' of github.com:rust-analyzer/rust-analyzerBenjamin Coenen2020-04-0711-11/+1579
|\|
| * add fixme to use type checker rather than manually comparing typesJosh Mcguigan2020-04-071-0/+7
| |
| * PR feedback implementationJosh Mcguigan2020-04-071-94/+331
| |
| * missing match arms diagnostic change source to match expressionJosh Mcguigan2020-04-073-3/+7
| |
| * handle match auto-derefJosh Mcguigan2020-04-072-1/+45
| |
| * improving documentationJosh Mcguigan2020-04-071-16/+64
| |
| * handle non matching enum pattern typesJosh Mcguigan2020-04-072-41/+57
| |
| * remove panicsJosh Mcguigan2020-04-072-66/+214
| |
| * missing match arms diagnosticJosh Mcguigan2020-04-079-9/+1037
| |
| * Fix Chalk panicFlorian Diebold2020-04-063-2/+33
| | | | | | | | | | Fixes #3865. Basically I forgot to shift 'back' when we got `dyn Trait`s back from Chalk, so after going through Chalk a few times, the panic happened.
| * Check for eprintln on CIAleksey Kladov2020-04-061-0/+5
| |
* | feat: add attributes support on struct fields #3870Benjamin Coenen2020-04-072-3/+38
|/ | | | Signed-off-by: Benjamin Coenen <[email protected]>
* Use log info in trait_solve_queryEdwin Cheng2020-04-061-1/+1
|
* Merge #3744bors[bot]2020-04-0611-136/+294
|\ | | | | | | | | | | | | | | | | 3744: Upgrade Chalk r=matklad a=flodiebold Co-authored-by: Florian Diebold <[email protected]> Co-authored-by: Florian Diebold <[email protected]>
| * Upgrade Chalk againFlorian Diebold2020-04-0511-109/+192
| | | | | | | | | | | | | | The big change here is counting binders, not variables (https://github.com/rust-lang/chalk/pull/360). We have to adapt to the same scheme for our `Ty::Bound`. It's mostly fine though, even makes some things more clear.
| * Upgrade ChalkFlorian Diebold2020-04-053-30/+105
| |
* | Hide unit fn return typesLaurențiu Nicola2020-04-055-20/+28
|/
* Fix inference of function pointer return typesLaurențiu Nicola2020-04-051-0/+26
|
* Macro patterns are not confused with expressions.Aleksey Kladov2020-04-031-2/+29
| | | | | | | | | | | We treat macro calls as expressions (there's appropriate Into impl), which causes problem if there's expresison and non-expression macro in the same node (like in the match arm). We fix this problem by nesting macor patterns into another node (the same way we nest path into PathExpr or PathPat). Ideally, we probably should add a similar nesting for macro expressions, but that needs some careful thinking about macros in blocks: `{ am_i_expression!() }`.
* Add inference for literal and range patternsFlorian Diebold2020-04-015-3/+104
|
* Simplifyveetaha2020-03-311-16/+13
|
* Simplifyveetaha2020-03-281-11/+4
|
* Remove some unwrapsAleksey Kladov2020-03-282-18/+16
|