Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
| * | | | Carry over attributes in extract_struct_from_enum_variant | Lukas Wirth | 2021-06-02 | 1 | -5/+32 | |
| | | | | ||||||
| * | | | Account for generics in extract_struct_from_enum_variant | Lukas Wirth | 2021-06-02 | 2 | -20/+48 | |
| | |/ | |/| | ||||||
* | | | Merge #9111 | bors[bot] | 2021-06-02 | 1 | -1/+27 | |
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 9111: fix: make "extract type alias" place extracted type alias outside of impl r=jonas-schievink a=jonas-schievink bors r+ Co-authored-by: Jonas Schievink <[email protected]> | |||||
| * | | | Place extracted type alias outside of impl | Jonas Schievink | 2021-06-02 | 1 | -1/+27 | |
| |/ / | ||||||
* | | | Remove obsolete is_new_item field on CompletionContext | Lukas Wirth | 2021-06-02 | 4 | -17/+5 | |
| | | | ||||||
* | | | Add MethodCall and FieldAccess variants to ImmediateLocation | Lukas Wirth | 2021-06-02 | 7 | -49/+81 | |
|/ / | ||||||
* | | Fall back to legacy prelude | Jonas Schievink | 2021-06-01 | 2 | -14/+28 | |
| | | ||||||
* | | Implement per-edition preludes | Jonas Schievink | 2021-06-01 | 12 | -141/+318 | |
|/ | ||||||
* | Merge #8717 | bors[bot] | 2021-05-31 | 7 | -806/+2769 | |
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8717: Update match checking algorithm r=iDawer a=iDawer I've recently got interest in the match checking to extend the current algo to support reporting witnesses of non-exhaustiveness. It appears the algo is outdated from rustc's implementation. I decided to rewrite it based on the latest rustc's version. It is a diff-based port to ra codebase. That means you can diff-compare these files to rustc. I'm striving to keep minimal ra-related changes in the algo to make it easier to backport future changes from the upstream. Based on upstream algorithm of version rust-lang/rust 1.52.0-nightly (25c15cdbe 2021-04-22) https://github.com/rust-lang/rust/blob/25c15cdbe/compiler/rustc_mir_build/src/thir/pattern/usefulness.rs The goal of this PR is to cover the current `missing-match-arm` diagnostic. What is remaining to do: - [x] Error handling. The errors that are unrelated to match checking will be handled before the check. Just like how it made in rustc. - [x] Lowering `hir_def::expr::Pat` to `hir_ty::diagnostics::match_check::Pat`. rustc's match checking works on top of `rustc_mir_build::thir::Pat`, which is lowered from `hir::Pat` and carries some extra semantics used by the check. All unrelated checks are done there. RA could use this to rule out running the check on unimplemented cases (`Pat::ConstBlock`, etc). - [x] ~~Proper~~Loose typecheck of match arm patterns (https://github.com/rust-analyzer/rust-analyzer/pull/8840, https://github.com/rust-analyzer/rust-analyzer/pull/8875). - [x] Tests from `hir_ty::diagnostics::match_check::tests`. - [x] Clean up `todo`s - [x] Test run on real repos https://github.com/rust-analyzer/rust-analyzer/pull/8717#issuecomment-847120265. Co-authored-by: Dawer <[email protected]> | |||||
| * | Expand fixme comments | Dawer | 2021-05-31 | 4 | -3/+9 | |
| | | ||||||
| * | fix: panic on extra fields in a pattern | Dawer | 2021-05-31 | 1 | -0/+25 | |
| | | ||||||
| * | Correct binding pattern's type; handle invalid records. | Dawer | 2021-05-31 | 1 | -5/+55 | |
| | | ||||||
| * | Take substitutions into account. | Dawer | 2021-05-31 | 3 | -14/+33 | |
| | | ||||||
| * | eprint panic context | Dawer | 2021-05-31 | 3 | -14/+36 | |
| | | ||||||
| * | minor: doc comment pat_util | Dawer | 2021-05-31 | 1 | -0/+4 | |
| | | ||||||
| * | Test match guards, reference patterns | Dawer | 2021-05-31 | 1 | -0/+51 | |
| | | ||||||
| * | Box field detection; test #[non-exhaustive] attribute | Dawer | 2021-05-31 | 3 | -10/+52 | |
| | | ||||||
| * | Better tests: check if match checking bails out. | Dawer | 2021-05-31 | 2 | -1/+69 | |
| | | ||||||
| * | Replace the old match checking algorithm | Dawer | 2021-05-31 | 7 | -1927/+311 | |
| | | ||||||
| * | Include old tests | Dawer | 2021-05-31 | 1 | -69/+597 | |
| | | ||||||
| * | Don't panic on a pattern of unresolved ADT variant. | Dawer | 2021-05-31 | 2 | -50/+14 | |
| | | ||||||
| * | Clean up, more docs. | Dawer | 2021-05-31 | 5 | -105/+384 | |
| | | ||||||
| * | Check pattern types. | Dawer | 2021-05-31 | 3 | -30/+85 | |
| | | ||||||
| * | Expand binding patterns. | Dawer | 2021-05-31 | 2 | -6/+110 | |
| | | ||||||
| * | Fix visibility warnings | Dawer | 2021-05-31 | 3 | -12/+12 | |
| | | ||||||
| * | Lower binding pattern | Dawer | 2021-05-31 | 2 | -9/+28 | |
| | | ||||||
| * | Lower bool literals | Dawer | 2021-05-31 | 2 | -13/+29 | |
| | | ||||||
| * | Treat ctor of unhandled type as non-exhaustive. | Dawer | 2021-05-31 | 2 | -4/+24 | |
| | | ||||||
| * | Lower Pat::Path | Dawer | 2021-05-31 | 1 | -0/+18 | |
| | | ||||||
| * | Do not do match check if lowering failed. | Dawer | 2021-05-31 | 1 | -2/+19 | |
| | | ||||||
| * | Fix panics on pattern_arena.borrow with ugly cloning | Dawer | 2021-05-31 | 2 | -16/+15 | |
| | | ||||||
| * | Basic lowering hir_def::exrp::Pat -> typed HIR. | Dawer | 2021-05-31 | 5 | -164/+387 | |
| | | | | | | | | Pattern arena is broken | |||||
| * | Handle unordered fields in struct patterns | Dawer | 2021-05-31 | 1 | -2/+12 | |
| | | ||||||
| * | Complete field replacing | Dawer | 2021-05-31 | 1 | -2/+7 | |
| | | ||||||
| * | Support bool literal patterns | Dawer | 2021-05-31 | 2 | -9/+182 | |
| | | ||||||
| * | Check enum patterns | Dawer | 2021-05-31 | 3 | -6/+124 | |
| | | ||||||
| * | Build wildcard witnesses instead of panicking | Dawer | 2021-05-31 | 1 | -8/+8 | |
| | | ||||||
| * | Implement struct ctor application | Dawer | 2021-05-31 | 5 | -69/+121 | |
| | | ||||||
| * | Add remaining Constructor variants | Dawer | 2021-05-31 | 1 | -14/+56 | |
| | | ||||||
| * | Complete usefulness::SubPatSet impl | Dawer | 2021-05-31 | 1 | -3/+71 | |
| | | ||||||
| * | List useless patterns in a useful match arm | Dawer | 2021-05-31 | 1 | -9/+58 | |
| | | ||||||
| * | Remove unneeded indirection on PatCtxt | Dawer | 2021-05-31 | 3 | -24/+24 | |
| | | ||||||
| * | Enable generation of non-exhaustiveness witnesses | Dawer | 2021-05-31 | 3 | -13/+76 | |
| | | ||||||
| * | Update match checking. | Dawer | 2021-05-31 | 6 | -1/+1471 | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | fn is_useful , more skeletons Specify a lifetime on pattern references impl PatStack fill impl Matrix PatStack::pop_head_constructor Index-based approach struct PatCtxt fields construction fn Fields::wildcards split wildcard fn Constructor::is_covered_by_any(..) fn Matrix::specialize_constructor(..) impl Usefulness Initial work on witness construction Reorganize files Replace match checking diagnostic Handle types of expanded patterns unit match checking go brrr | |||||
* | | hir_ty: use correct receiver_ty in method resolution | cynecx | 2021-05-31 | 3 | -12/+82 | |
|/ | ||||||
* | Merge #9088 | bors[bot] | 2021-05-31 | 1 | -1/+0 | |
|\ | | | | | | | | | | | | | | | | | 9088: minor: remove debug print r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]> | |||||
| * | minor: remove debug print | Aleksey Kladov | 2021-05-31 | 1 | -1/+0 | |
| | | ||||||
* | | Merge #9084 #9087 | bors[bot] | 2021-05-31 | 2 | -112/+37 | |
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | 9084: fix: avoid panics in match case diagnostic r=matklad a=matklad bors r+ 🤖 closes #8809 9087: fix: fix shell injection in task spawning r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]> | |||||
* | | Use `cargo check` again | Jonas Schievink | 2021-05-31 | 1 | -1/+1 | |
| | | ||||||
| * | minor: it's Parameter, not Argument | Aleksey Kladov | 2021-05-31 | 2 | -5/+5 | |
| | |