From ccaf0b4654a3c71b58b92bdc86da03126d494a20 Mon Sep 17 00:00:00 2001 From: Corey Richardson Date: Tue, 31 Dec 2013 19:07:41 -0500 Subject: [PATCH] Remove a fixme pcwalton says this is right, and it looks right to me too. Closes #4731 --- src/librustc/middle/check_match.rs | 1 - .../struct-pattern-match-useless.rs | 23 +++++++++++++++++++ src/test/run-pass/struct-pattern-matching.rs | 6 ++++- 3 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 src/test/compile-fail/struct-pattern-match-useless.rs diff --git a/src/librustc/middle/check_match.rs b/src/librustc/middle/check_match.rs index 079c2750268..5739225a5ea 100644 --- a/src/librustc/middle/check_match.rs +++ b/src/librustc/middle/check_match.rs @@ -673,7 +673,6 @@ fn specialize(cx: &MatchCheckCtxt, DefFn(..) | DefStruct(..) => { - // FIXME #4731: Is this right? --pcw let new_args; match args { Some(args) => new_args = args, diff --git a/src/test/compile-fail/struct-pattern-match-useless.rs b/src/test/compile-fail/struct-pattern-match-useless.rs new file mode 100644 index 00000000000..b9c0be9276d --- /dev/null +++ b/src/test/compile-fail/struct-pattern-match-useless.rs @@ -0,0 +1,23 @@ +// Copyright 2014 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +struct Foo { + x: int, + y: int, +} + +pub fn main() { + let a = Foo { x: 1, y: 2 }; + match a { + Foo { x: x, y: y } => (), + Foo { .. } => () //~ ERROR unreachable pattern + } + +} diff --git a/src/test/run-pass/struct-pattern-matching.rs b/src/test/run-pass/struct-pattern-matching.rs index d2b038fab0e..6033554d0cb 100644 --- a/src/test/run-pass/struct-pattern-matching.rs +++ b/src/test/run-pass/struct-pattern-matching.rs @@ -1,4 +1,4 @@ -// Copyright 2012 The Rust Project Developers. See the COPYRIGHT +// Copyright 2014 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // @@ -18,4 +18,8 @@ pub fn main() { match a { Foo { x: x, y: y } => println!("yes, {}, {}", x, y) } + + match a { + Foo { .. } => () + } }