diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2020-04-01 12:22:31 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2020-04-01 12:22:31 +0100 |
commit | 67351a011bbaf63617c7fc96884129e9fc39e411 (patch) | |
tree | 6b1fd4e64965edb1de5f18894537d812b13fc73a /crates/ra_hir_ty/src/traits.rs | |
parent | d03d638cc3803a4994cef01b889cd1eaf20e7e01 (diff) | |
parent | a9d0c9b2a4601835d1dd480b711c5d26f9c97430 (diff) |
Merge #3805
3805: lower literal patterns r=JoshMcguigan a=JoshMcguigan
While working on #3706 I discovered literal patterns weren't being lowered. This PR implements that lowering.
Questions for reviewers:
1. This re-uses the existing conversion from `ast::LiteralKind` to `Literal`, but `ast::LiteralKind` doesn't include information about the actual value of the literal, which causes `Literal` to be created with the default value for the type (rather than the actual value in the source code). Am I correct in thinking that we'd eventually want to change things in such a way that we could initialize the `Literal` with the actual literal value? Is there an existing issue for this, or else perhaps I should create one to discuss how it should be implemented? My main question would be whether `ast::LiteralKind` should be extended to hold the actual value, or if we should provide some other way to get that information from `ast::Literal`?
2. I couldn't find tests which directly cover this, but it does seem to work in #3706. Do we have unit tests for this lowering code?
3. I'm not sure why `lit.literal()` returns an `Option`. Is returning a `Pat::Missing` in the `None` case the right thing to do?
4. I was basically practicing type-system driven development to figure out the transformation from `ast::Pat::LiteralPat` to `Pat::Lit`. I don't have an immediate question here, but I just wanted to ensure this section is looked at closely during review.
Co-authored-by: Josh Mcguigan <[email protected]>
Diffstat (limited to 'crates/ra_hir_ty/src/traits.rs')
0 files changed, 0 insertions, 0 deletions