about summary refs log tree commit diff
path: root/src/test/ui/match
AgeCommit message (Collapse)AuthorLines
2020-03-27non-exhastive diagnostic: add note re. scrutinee typeMazdak Farrokhzad-0/+1
2020-03-12update testsMark Mansi-2/+2
2020-03-06When encountering an Item in a pat context, point at the item defEsteban Küber-0/+3
2020-02-25check_pat_path: use pattern_causeMazdak Farrokhzad-1/+3
2020-02-25enhance check_pat_lit with TopInfoMazdak Farrokhzad-0/+3
2020-02-06rustc_macros: don't limit the -Zmacro-backtrace suggestion to extern macros.Eduard-Mihai Burtescu-2/+0
2020-02-06rustc: rename -Zexternal-macro-backtrace to -Zmacro-backtrace.Eduard-Mihai Burtescu-1/+1
2020-01-24Normalise notes with the/isvarkor-1/+1
2020-01-18slice_patterns: organize some testsMazdak Farrokhzad-72/+0
2020-01-18slice_patterns: remove gates in testsMazdak Farrokhzad-7/+5
2020-01-09Update testsVadim Petrochenkov-3/+24
2020-01-05Add backticks to various diagnosticsvarkor-8/+8
2019-12-30MatchExpressionArmPattern: Use more generic wording.Mazdak Farrokhzad-2/+2
The existing wording was inappropriate for e.g. `if let Ok(_) = expr { .. }`. The diagnostic would leak the fact that we desugar to a `match`.
2019-12-30note other end-point when typeck range patsMazdak Farrokhzad-1/+3
2019-11-21Auto merge of #66389 - estebank:type-err-labels, r=petrochenkovbors-50/+19
Specific labels when referring to "expected" and "found" types
2019-11-18Auto merge of #58281 - mark-i-m:synthesis, r=estebankbors-0/+4
Add outlives suggestions for some lifetime errors This PR implements suggestion diagnostics for some lifetime mismatch errors. When the borrow checker finds that some lifetime 'a doesn't outlive some other lifetime 'b that it should outlive, then in addition to the current lifetime error, we also emit a suggestion for how to fix the problem by adding a bound: - If a and b are normal named regions, suggest to add the bound `'a: 'b` - If b is static, suggest to replace a with static - If b also needs to outlive a, they must be the same, so suggest unifying them We start with a simpler implementation that avoids diagnostic regression or implementation complexity: - We only makes suggestions for lifetimes the user can already name (eg not closure regions or elided regions) - For now, we only emit a help note, not an actually suggestion because it is significantly easier. Finally, there is one hack: it seems that implicit regions in async fn are given the name '_ incorrectly. To avoid suggesting '_: 'x, we simply filter out such lifetimes by name. For more info, see this internals thread: https://internals.rust-lang.org/t/mechanical-suggestions-for-some-borrow-checker-errors/9049/3 TL;DR Make suggestions to add a `where 'a: 'b` constraint for some lifetime errors. Details are in the paper linked from the internals thread above. r? @estebank TODO - [x] Clean up code - [x] Only make idiomatic suggestions - [x] don't suggest naming `&'a self` - [x] rather than `'a: 'static`, suggest replacing `'a` with `'static` - [x] rather than `'a: 'b, 'b: 'a`, suggest replacing `'a` with `'b` or vice versa - [x] Performance (maybe need a perf run when this is closer to the finish line?) - perf run was clean... - EDIT: perf run seems to only check non-error performance... How do we check that error performance didn't regress? - [x] Needs ui tests - [x] Integrate the `help` message into the main lifetime `error`
2019-11-18Surround types with backticks in type errorsEsteban Küber-11/+11
2019-11-18Remove E0308 note when primary label has all infoEsteban Küber-36/+5
2019-11-18review comments: tweak prefix stringsEsteban Küber-2/+2
2019-11-18Specific labels when referring to "expected" and "found" typesEsteban Küber-14/+14
2019-11-13Tweak non-char/numeric in range pattern diagnosticYuki Okushi-14/+23
2019-10-28Improve the "try using a variant of the expected type" hint.Patryk Wychowaniec-2/+2
2019-10-28Auto merge of #65421 - estebank:variants, r=petrochenkovbors-8/+8
Point at local similarly named element and tweak references to variants Partially address #65386.
2019-10-27Gather together usefulness testsNadrieril-928/+0
I took most tests that were testing only for match exhaustiveness, pattern refutability or match arm reachability, and put them in the same test folder.
2019-10-27Point at local similarly named element and tweak references to variantsEsteban Küber-8/+8
Point at the span for the definition of ADTs internal to the current crate. Look at the leading char of the ident to determine whether we're expecting a likely fn or any of a fn, a tuple struct or a tuple variant. Turn fn `add_typo_suggestion` into a `Resolver` method.
2019-10-27update testsMark Mansi-0/+4
2019-10-16Only emit overlapping patterns lint if the overlap is partialEsteban Küber-51/+9
2019-10-16Continue to emit unreachable pattern on cases caught by overlapping patternsEsteban Küber-19/+51
2019-10-16Move overlapping patterns to its own lintEsteban Küber-4/+10
2019-10-16Add check for overlapping ranges to unreachable patterns lintEsteban Küber-27/+37
2019-10-14Rollup merge of #65292 - JohnTitor:add-backticks, r=varkor,CentrilMazdak Farrokhzad-4/+4
Print lifetimes with backticks Fixes #65287 r? @varkor
2019-10-11Print lifetimes with backticksYuki Okushi-4/+4
2019-10-09Suggest `if let` on `let` refutable bindingEsteban Küber-0/+28
2019-09-21Do not trigger unreachable lint in async body and Use span labelsEsteban Küber-6/+3
2019-09-18Point at original span when emitting unreachable lintAaron Hill-0/+5
Fixes #64590 When we emit an 'unreachable' lint, we now add a note pointing at the expression that actually causes the code to be unreachable (e.g. `return`, `break`, `panic`). This is especially useful when macros are involved, since a diverging expression might be hidden inside of a macro invocation.
2019-09-11Auto merge of #64271 - Centril:non-exhaustive-peel-refs, r=estebankbors-0/+242
check_match: refactor + improve non-exhaustive diagnostics for default binding modes Refactor `check_match` a bit with more code-reuse and improve the diagnostics for a non-exhaustive pattern match by peeling off any references from the scrutinee type so that the "defined here" label is added in more cases. For example: ```rust error[E0004]: non-exhaustive patterns: `&mut &B` not covered --> foo.rs:4:11 | 1 | enum E { A, B } | --------------- | | | | | not covered | `E` defined here ... 4 | match x { | ^ pattern `&mut &B` not covered | = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms ``` Moreover, wrt. "defined here", we give irrefutable pattern matching (i.e. in `let`, `for`, and `fn` parameters) a more consistent treatment in line with `match`. r? @estebank
2019-09-09check_match: unify check_irrefutable & check_exhaustive more.Mazdak Farrokhzad-17/+43
2019-09-09check_match: refactor + improve non-exhaustive diag for default binding modes.Mazdak Farrokhzad-0/+216
2019-09-08Update tests wrt. bind_by_by_move_pattern_guards stabilization.Mazdak Farrokhzad-2/+0
2019-09-06Update ui testsvarkor-1/+1
2019-09-04Point at variant on pattern field count mismatchEsteban Küber-0/+3
2019-08-13Suggest giving return type to closures on E0282Esteban Küber-4/+1
2019-08-09Be more accurate when mentioning type of found match armsEsteban Küber-0/+41
2019-08-06pretty-pretty extremal constants!Zack M. Davis-2/+2
While many programmers may intuitively appreciate the significance of "magic numbers" like −2147483648, Rust is about empowering everyone to build reliable and efficient software! It's a bit more legible to print the constant names (even noisy fully-qualified-paths thereof). The bit-manipulation methods mirror those in `librustc_mir::hair::pattern::_match::all_constructors`; thanks to the immortal Varkor for guidance. Resolves #56393.
2019-07-30Remove 'feature(nll)' from bind_by_move_pattern_guards tests.Mazdak Farrokhzad-1/+1
2019-07-28Rollup merge of #63067 - JohnTitor:test-for-50900, r=CentrilMazdak Farrokhzad-0/+33
Add test for issue-50900 Closes #50900
2019-07-28Move to src/test/ui/match/Yuki Okushi-0/+33
2019-07-28--bless tests due to new subslice syntax.Mazdak Farrokhzad-2/+2
2019-07-28Use new 'p @ ..' syntax in tests.Mazdak Farrokhzad-3/+3
2019-07-17normalize use of backticks in compiler messages for librustc/lintSamy Kacimi-1/+1
https://github.com/rust-lang/rust/issues/60532