diff options
| author | Ariel Ben-Yehuda <ariel.byd@gmail.com> | 2017-12-25 18:14:50 +0200 |
|---|---|---|
| committer | Ariel Ben-Yehuda <ariel.byd@gmail.com> | 2018-01-13 21:17:19 +0200 |
| commit | c1281b41ecaec037f2e2d7fd75cd0c714dae3f7c (patch) | |
| tree | 787fb1247f6d77bb90ac793e3d256c12a97992b3 /src/test | |
| parent | e6072a7b3835f1875e81c9fd27799f9b20a0770c (diff) | |
| download | rust-c1281b41ecaec037f2e2d7fd75cd0c714dae3f7c.tar.gz rust-c1281b41ecaec037f2e2d7fd75cd0c714dae3f7c.zip | |
check_match: fix handling of privately uninhabited types
the match-checking code used to use TyErr for signaling "unknown, inhabited" types for a long time. It had been switched to using the exact type in #38069, to handle uninhabited types. However, in #39980, we discovered that we still needed the "unknown inhabited" logic, but I used `()` instead of `TyErr` to handle that. Revert to using `TyErr` to fix that problem.
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/run-pass/issue-46964.rs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/test/run-pass/issue-46964.rs b/src/test/run-pass/issue-46964.rs new file mode 100644 index 00000000000..2a82c6dd438 --- /dev/null +++ b/src/test/run-pass/issue-46964.rs @@ -0,0 +1,28 @@ +// Copyright 2017 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +mod my_mod { + #[derive(Clone, Copy, Eq, PartialEq, PartialOrd, Ord, Hash)] + pub struct Name<'a> { + source: &'a str, + } + + pub const JSON: Name = Name { source: "JSON" }; +} + +pub fn crash() -> bool { + match (my_mod::JSON, None) { + (_, Some(my_mod::JSON)) => true, + (my_mod::JSON, None) => true, + _ => false, + } +} + +fn main() {} |
