Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | internal: move diagnostics infra to hir | Aleksey Kladov | 2021-06-12 | 4 | -612/+13 |
| | |||||
* | Move some hir_ty diagnostics to hir | Aleksey Kladov | 2021-06-12 | 4 | -1763/+97 |
| | |||||
* | minor: reduce visibility | Aleksey Kladov | 2021-06-12 | 1 | -3/+2 |
| | |||||
* | internal: move missing unsafe diagnostic to hir | Aleksey Kladov | 2021-06-12 | 3 | -162/+21 |
| | |||||
* | internal: move inference diagnostics to hir | Aleksey Kladov | 2021-06-12 | 3 | -239/+10 |
| | |||||
* | Set enable_proc_attr_macros in hir_ty TestDB | Jonas Schievink | 2021-06-03 | 1 | -1/+9 |
| | |||||
* | Merge #9104 | bors[bot] | 2021-06-03 | 2 | -1/+64 |
|\ | | | | | | | | | | | | | | | | | | | | | 9104: Implement `#[rustc_skip_array_during_method_dispatch]` r=flodiebold a=jonas-schievink haxx run the world Closes https://github.com/rust-analyzer/rust-analyzer/issues/8552 Part of https://github.com/rust-analyzer/rust-analyzer/issues/9056 Co-authored-by: Jonas Schievink <[email protected]> | ||||
| * | Implement `#[rustc_skip_array_during_method_dispatch]` | Jonas Schievink | 2021-06-01 | 2 | -1/+64 |
| | | |||||
* | | Merge #9105 | bors[bot] | 2021-06-03 | 5 | -15/+50 |
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 9105: internal: calculate pattern adjustments r=flodiebold a=iDawer This extends `InferenceResult` with `pub pat_adjustments: FxHashMap<PatId, Vec<Ty>>`. Fixes #9095 Co-authored-by: Dawer <[email protected]> | ||||
| * | | internal: implement pattern adjustments. | Dawer | 2021-06-01 | 3 | -2/+35 |
| | | | |||||
| * | | minor: Avoid eprintln on panic | Dawer | 2021-06-01 | 2 | -13/+15 |
| | | | |||||
* | | | Fix bind patterns always being treated as ref taking patterns | Lukas Wirth | 2021-06-02 | 2 | -19/+32 |
| |/ |/| | |||||
* | | Implement per-edition preludes | Jonas Schievink | 2021-06-01 | 5 | -44/+97 |
|/ | |||||
* | Merge #8717 | bors[bot] | 2021-05-31 | 5 | -805/+2767 |
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 | 3 | -2/+5 |
| | | |||||
| * | 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 | 4 | -101/+383 |
| | | |||||
| * | 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 | 4 | -68/+120 |
| | | |||||
| * | 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 | 5 | -1/+1470 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 |
|/ |