about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorAriel Ben-Yehuda <ariel.byd@gmail.com>2017-12-25 18:14:50 +0200
committerAriel Ben-Yehuda <ariel.byd@gmail.com>2018-01-13 21:17:19 +0200
commitc1281b41ecaec037f2e2d7fd75cd0c714dae3f7c (patch)
tree787fb1247f6d77bb90ac793e3d256c12a97992b3 /src/test
parente6072a7b3835f1875e81c9fd27799f9b20a0770c (diff)
downloadrust-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.rs28
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() {}