Skip to content

Commit 43e4783

Browse files
committed
address reviewer comments
1 parent 459dae9 commit 43e4783

File tree

2 files changed

+29
-28
lines changed

2 files changed

+29
-28
lines changed

compiler/rustc_mir_build/src/build/matches/test.rs

+6-5
Original file line numberDiff line numberDiff line change
@@ -671,12 +671,13 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
671671
(&TestKind::Range { .. }, _) => None,
672672

673673
(&TestKind::Eq { .. } | &TestKind::Len { .. }, _) => {
674-
// We do call `test()` below to see what kind of test `match_pair` would require.
675-
// If it is the same test as `test`, then we can just use `test`.
674+
// The call to `self.test(&match_pair)` below is not actually used to generate any
675+
// MIR. Instead, we just want to compare with `test` (the parameter of the method)
676+
// to see if it is the same.
676677
//
677-
// However, `test()` assumes that there won't be any or-patterns, so we need to
678-
// specially handle that here and return `None` (since the `test` clearly doesn't
679-
// apply to an or-pattern).
678+
// However, at this point we can still encounter or-patterns that were extracted
679+
// from previous calls to `sort_candidate`, so we need to manually address that
680+
// case to avoid panicking in `self.test()`.
680681
if let PatKind::Or { .. } = &*match_pair.pattern.kind {
681682
return None;
682683
}

src/test/ui/match/issue-72680.rs

+23-23
Original file line numberDiff line numberDiff line change
@@ -3,39 +3,39 @@
33
#![feature(or_patterns)]
44

55
fn main() {
6-
assert_eq!(f("", 0), true);
7-
assert_eq!(f("a", 1), true);
8-
assert_eq!(f("b", 1), true);
6+
assert!(f("", 0));
7+
assert!(f("a", 1));
8+
assert!(f("b", 1));
99

10-
assert_eq!(f("", 1), false);
11-
assert_eq!(f("a", 0), false);
12-
assert_eq!(f("b", 0), false);
10+
assert!(!f("", 1));
11+
assert!(!f("a", 0));
12+
assert!(!f("b", 0));
1313

14-
assert_eq!(f("asdf", 032), false);
14+
assert!(!f("asdf", 032));
1515

1616
////
1717

18-
assert_eq!(g(true, true, true), false);
19-
assert_eq!(g(false, true, true), false);
20-
assert_eq!(g(true, false, true), false);
21-
assert_eq!(g(false, false, true), false);
22-
assert_eq!(g(true, true, false), false);
18+
assert!(!g(true, true, true));
19+
assert!(!g(false, true, true));
20+
assert!(!g(true, false, true));
21+
assert!(!g(false, false, true));
22+
assert!(!g(true, true, false));
2323

24-
assert_eq!(g(false, true, false), true);
25-
assert_eq!(g(true, false, false), true);
26-
assert_eq!(g(false, false, false), true);
24+
assert!(g(false, true, false));
25+
assert!(g(true, false, false));
26+
assert!(g(false, false, false));
2727

2828
////
2929

30-
assert_eq!(h(true, true, true), false);
31-
assert_eq!(h(false, true, true), false);
32-
assert_eq!(h(true, false, true), false);
33-
assert_eq!(h(false, false, true), false);
34-
assert_eq!(h(true, true, false), false);
30+
assert!(!h(true, true, true));
31+
assert!(!h(false, true, true));
32+
assert!(!h(true, false, true));
33+
assert!(!h(false, false, true));
34+
assert!(!h(true, true, false));
3535

36-
assert_eq!(h(false, true, false), true);
37-
assert_eq!(h(true, false, false), true);
38-
assert_eq!(h(false, false, false), true);
36+
assert!(h(false, true, false));
37+
assert!(h(true, false, false));
38+
assert!(h(false, false, false));
3939
}
4040

4141
fn f(s: &str, num: usize) -> bool {

0 commit comments

Comments
 (0)