aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Prefix/suffix parameter inlay hint hiding heuristic is more strictLukas Wirth2021-06-031-70/+57
|
* Merge #9108bors[bot]2021-06-021-2/+31
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 9108: Don't show extract into variable assist for unit expressions r=jonas-schievink a=brandondong **Reproduction:** ```rust fn main() { let mut i = 3; $0if i >= 0 { i += 1; } else { i -= 1; }$0 } ``` 1. Select the snippet of code between the $0's. 2. The extract into variable assist shows up, pushing down the more useful extract into function assist. 3. The resulting output of selecting the extract into variable assist is valid but with the extracted variable having the unit type: ```rust fn main() { let mut i = 3; let var_name = if i >= 0 { i += 1; } else { i -= 1; }; var_name } ``` **Fix:** - Don't show the extract into variable assist for unit expressions. I could not think of any scenarios where such a variable extraction would be desired. Co-authored-by: Brandon <[email protected]>
| * Don't show extract into variable assist for unit expressionsBrandon2021-06-021-2/+31
| |
* | Merge #9112bors[bot]2021-06-022-47/+127
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 9112: Fix some bugs in `extract_struct_from_enum_variant` assist r=Veykril a=Veykril bors r+ Fixes #9100 Fixes #9099 Kind of fixes #9109, it now copies all the generics might be incorrect if the variant doesn't use all of them) Co-authored-by: Lukas Wirth <[email protected]>
| * | Fix references to patterns in extract_struct_from_enum_variant assistLukas Wirth2021-06-021-26/+51
| | |
| * | Carry over attributes in extract_struct_from_enum_variantLukas Wirth2021-06-021-5/+32
| | |
| * | Account for generics in extract_struct_from_enum_variantLukas Wirth2021-06-022-20/+48
| | |
* | | Merge #9111bors[bot]2021-06-021-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 implJonas Schievink2021-06-021-1/+27
| |/ /
* | | Merge #9110bors[bot]2021-06-029-66/+86
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | 9110: internal: simplify r=Veykril a=Veykril bors r+ Co-authored-by: Lukas Wirth <[email protected]>
| * | Remove obsolete is_new_item field on CompletionContextLukas Wirth2021-06-024-17/+5
| | |
| * | Add MethodCall and FieldAccess variants to ImmediateLocationLukas Wirth2021-06-027-49/+81
|/ /
* | Merge #9102bors[bot]2021-06-012-14/+28
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | 9102: minor: Fall back to legacy prelude r=jonas-schievink a=jonas-schievink should fix https://github.com/rust-analyzer/rust-analyzer/issues/9101 bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | Fall back to legacy preludeJonas Schievink2021-06-012-14/+28
|/ /
* | Merge #9097bors[bot]2021-06-0112-141/+318
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | 9097: feat: Implement per-edition preludes r=jonas-schievink a=jonas-schievink Part of https://github.com/rust-analyzer/rust-analyzer/issues/9056 Our previous implementation was incorrect (presumably because of the misleading comment in libstd [here](https://github.com/rust-lang/rust/blob/a7890c7952bdc9445eb6c63dc671fa7a1ab0260d/library/std/src/lib.rs#L339-L343)). `#[prelude_import]` does not define the prelude, it can only override the implicit prelude for the current crate. This PR fixes that, which also makes the prelude imports in `rustc_span` work. Closes https://github.com/rust-analyzer/rust-analyzer/issues/8815. bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * Implement per-edition preludesJonas Schievink2021-06-0112-141/+318
|/
* Merge #8717bors[bot]2021-05-317-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 commentsDawer2021-05-314-3/+9
| |
| * fix: panic on extra fields in a patternDawer2021-05-311-0/+25
| |
| * Correct binding pattern's type; handle invalid records.Dawer2021-05-311-5/+55
| |
| * Take substitutions into account.Dawer2021-05-313-14/+33
| |
| * eprint panic contextDawer2021-05-313-14/+36
| |
| * minor: doc comment pat_utilDawer2021-05-311-0/+4
| |
| * Test match guards, reference patternsDawer2021-05-311-0/+51
| |
| * Box field detection; test #[non-exhaustive] attributeDawer2021-05-313-10/+52
| |
| * Better tests: check if match checking bails out.Dawer2021-05-312-1/+69
| |
| * Replace the old match checking algorithmDawer2021-05-317-1927/+311
| |
| * Include old testsDawer2021-05-311-69/+597
| |
| * Don't panic on a pattern of unresolved ADT variant.Dawer2021-05-312-50/+14
| |
| * Clean up, more docs.Dawer2021-05-315-105/+384
| |
| * Check pattern types.Dawer2021-05-313-30/+85
| |
| * Expand binding patterns.Dawer2021-05-312-6/+110
| |
| * Fix visibility warningsDawer2021-05-313-12/+12
| |
| * Lower binding patternDawer2021-05-312-9/+28
| |
| * Lower bool literalsDawer2021-05-312-13/+29
| |
| * Treat ctor of unhandled type as non-exhaustive.Dawer2021-05-312-4/+24
| |
| * Lower Pat::PathDawer2021-05-311-0/+18
| |
| * Do not do match check if lowering failed.Dawer2021-05-311-2/+19
| |
| * Fix panics on pattern_arena.borrow with ugly cloningDawer2021-05-312-16/+15
| |
| * Basic lowering hir_def::exrp::Pat -> typed HIR.Dawer2021-05-315-164/+387
| | | | | | | | Pattern arena is broken
| * Handle unordered fields in struct patternsDawer2021-05-311-2/+12
| |
| * Complete field replacingDawer2021-05-311-2/+7
| |
| * Support bool literal patternsDawer2021-05-312-9/+182
| |
| * Check enum patternsDawer2021-05-313-6/+124
| |
| * Build wildcard witnesses instead of panickingDawer2021-05-311-8/+8
| |
| * Implement struct ctor applicationDawer2021-05-315-69/+121
| |
| * Add remaining Constructor variantsDawer2021-05-311-14/+56
| |
| * Complete usefulness::SubPatSet implDawer2021-05-311-3/+71
| |
| * List useless patterns in a useful match armDawer2021-05-311-9/+58
| |
| * Remove unneeded indirection on PatCtxtDawer2021-05-313-24/+24
| |