forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Auto merge of rust-lang#87996 - sexxi-goose:fix-87988, r=nikomatsakis
RFC2229 Add missing edge case Closes rust-lang#87988 This PR fixes an ICE where a match discriminant is not being read when expected. This ICE was the result of a missing edge case which assumed that if a pattern is of type `PatKind::TupleStruct(..) | PatKind::Path(..) | PatKind::Struct(..) | PatKind::Tuple(..)` then a place could only be a multi variant if the place is of type kind Adt.
- Loading branch information
Showing
3 changed files
with
66 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
// run-pass | ||
// edition:2021 | ||
|
||
const LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED: i32 = 0x01; | ||
const LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT: i32 = 0x02; | ||
|
||
pub fn hotplug_callback(event: i32) { | ||
let _ = || { | ||
match event { | ||
LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED => (), | ||
LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT => (), | ||
_ => (), | ||
}; | ||
}; | ||
} | ||
|
||
fn main() { | ||
hotplug_callback(1); | ||
} |
44 changes: 44 additions & 0 deletions
44
src/test/ui/closures/2229_closure_analysis/match-edge-cases.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
// run-pass | ||
// edition:2021 | ||
|
||
const PATTERN_REF: &str = "Hello World"; | ||
const NUMBER: i32 = 30; | ||
const NUMBER_POINTER: *const i32 = &NUMBER; | ||
|
||
pub fn edge_case_ref(event: &str) { | ||
let _ = || { | ||
match event { | ||
PATTERN_REF => (), | ||
_ => (), | ||
}; | ||
}; | ||
} | ||
|
||
pub fn edge_case_str(event: String) { | ||
let _ = || { | ||
match event.as_str() { | ||
"hello" => (), | ||
_ => (), | ||
}; | ||
}; | ||
} | ||
|
||
pub fn edge_case_raw_ptr(event: *const i32) { | ||
let _ = || { | ||
match event { | ||
NUMBER_POINTER => (), | ||
_ => (), | ||
}; | ||
}; | ||
} | ||
|
||
pub fn edge_case_char(event: char) { | ||
let _ = || { | ||
match event { | ||
'a' => (), | ||
_ => (), | ||
}; | ||
}; | ||
} | ||
|
||
fn main() {} |