From 9b489f6fff4aa07bea2db9457ece5f77c211e016 Mon Sep 17 00:00:00 2001 From: Ben Blum Date: Tue, 21 Aug 2012 21:03:47 -0400 Subject: [PATCH] Don't refute "()" in let-bindings (fixes #3104). --- src/rustc/middle/check_alt.rs | 1 + src/test/run-pass/irrefutable-unit.rs | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 src/test/run-pass/irrefutable-unit.rs diff --git a/src/rustc/middle/check_alt.rs b/src/rustc/middle/check_alt.rs index 66216b523cb4..07351f49bea5 100644 --- a/src/rustc/middle/check_alt.rs +++ b/src/rustc/middle/check_alt.rs @@ -420,6 +420,7 @@ fn is_refutable(tcx: ty::ctxt, pat: @pat) -> bool { is_refutable(tcx, sub) } pat_wild | pat_ident(_, _, none) => { false } + pat_lit(@{node: expr_lit(@{node: lit_nil, _}), _}) => { false } // "()" pat_lit(_) | pat_range(_, _) => { true } pat_rec(fields, _) => { for fields.each |it| { diff --git a/src/test/run-pass/irrefutable-unit.rs b/src/test/run-pass/irrefutable-unit.rs new file mode 100644 index 000000000000..15b439131178 --- /dev/null +++ b/src/test/run-pass/irrefutable-unit.rs @@ -0,0 +1,3 @@ +fn main() { + let ((),()) = ((),()); +}