rustc: Handle struct patterns where the expected type is an enum
Previously, rustc would ICE if you matched on an enum-typed thing with a structure pattern. Error out correctly.
This commit is contained in:
parent
4332f8188b
commit
13df2ea69c
4 changed files with 85 additions and 34 deletions
18
src/test/compile-fail/issue-5358-1.rs
Normal file
18
src/test/compile-fail/issue-5358-1.rs
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
// Copyright 2013 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.
|
||||
|
||||
struct S(Either<uint, uint>);
|
||||
|
||||
fn main() {
|
||||
match S(Left(5)) {
|
||||
Right(_) => {} //~ ERROR mismatched types: expected `S` but found `core::either::Either
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
17
src/test/compile-fail/issue-5358.rs
Normal file
17
src/test/compile-fail/issue-5358.rs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
// Copyright 2013 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.
|
||||
|
||||
struct S(Either<uint, uint>);
|
||||
|
||||
fn main() {
|
||||
match *S(Left(5)) {
|
||||
S(_) => {} //~ ERROR mismatched types: expected `core::either::Either<uint,uint>` but found a structure pattern
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue