diff options
| author | Jakub Wieczorek <jakub@jakub.cc> | 2014-06-19 20:55:12 +0200 |
|---|---|---|
| committer | Jakub Wieczorek <jakub@jakub.cc> | 2014-06-20 17:41:19 +0200 |
| commit | abce42afa39d879a5ced511e7f5a62d8120155ff (patch) | |
| tree | b3fc6ecacf5159db9ecea7ce003da04805d9e8e6 /src/test | |
| parent | 76f7eeef52fac46f74c84f4fc05073745c741cb3 (diff) | |
| download | rust-abce42afa39d879a5ced511e7f5a62d8120155ff.tar.gz rust-abce42afa39d879a5ced511e7f5a62d8120155ff.zip | |
Address review comments
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/compile-fail/issue-2111.rs | 2 | ||||
| -rw-r--r-- | src/test/compile-fail/issue-4321.rs | 2 | ||||
| -rw-r--r-- | src/test/compile-fail/non-exhaustive-match-nested.rs | 2 | ||||
| -rw-r--r-- | src/test/compile-fail/non-exhaustive-match.rs | 16 | ||||
| -rw-r--r-- | src/test/compile-fail/non-exhaustive-pattern-witness.rs | 74 | ||||
| -rw-r--r-- | src/test/compile-fail/refutable-pattern-errors.rs | 4 | ||||
| -rw-r--r-- | src/test/compile-fail/refutable-pattern-in-fn-arg.rs | 2 | ||||
| -rw-r--r-- | src/test/run-pass/issue-7784.rs | 6 |
8 files changed, 94 insertions, 14 deletions
diff --git a/src/test/compile-fail/issue-2111.rs b/src/test/compile-fail/issue-2111.rs index 98eb62fe392..3d9c7401ded 100644 --- a/src/test/compile-fail/issue-2111.rs +++ b/src/test/compile-fail/issue-2111.rs @@ -10,7 +10,7 @@ fn foo(a: Option<uint>, b: Option<uint>) { match (a,b) { - //~^ ERROR: non-exhaustive patterns: (core::option::None, core::option::None) not covered + //~^ ERROR: non-exhaustive patterns: `(None, None)` not covered (Some(a), Some(b)) if a == b => { } (Some(_), None) | (None, Some(_)) => { } diff --git a/src/test/compile-fail/issue-4321.rs b/src/test/compile-fail/issue-4321.rs index 660183366e8..d589680b0ec 100644 --- a/src/test/compile-fail/issue-4321.rs +++ b/src/test/compile-fail/issue-4321.rs @@ -10,7 +10,7 @@ fn main() { let tup = (true, true); - println!("foo {:}", match tup { //~ ERROR non-exhaustive patterns: (true, false) not covered + println!("foo {:}", match tup { //~ ERROR non-exhaustive patterns: `(true, false)` not covered (false, false) => "foo", (false, true) => "bar", (true, true) => "baz" diff --git a/src/test/compile-fail/non-exhaustive-match-nested.rs b/src/test/compile-fail/non-exhaustive-match-nested.rs index bb5b2e750d5..483168bb8bc 100644 --- a/src/test/compile-fail/non-exhaustive-match-nested.rs +++ b/src/test/compile-fail/non-exhaustive-match-nested.rs @@ -13,7 +13,7 @@ enum u { c, d } fn main() { let x = a(c); - match x { //~ ERROR non-exhaustive patterns: a(c) not covered + match x { //~ ERROR non-exhaustive patterns: `a(c)` not covered a(d) => { fail!("hello"); } b => { fail!("goodbye"); } } diff --git a/src/test/compile-fail/non-exhaustive-match.rs b/src/test/compile-fail/non-exhaustive-match.rs index 97b65a305e0..cd78419439a 100644 --- a/src/test/compile-fail/non-exhaustive-match.rs +++ b/src/test/compile-fail/non-exhaustive-match.rs @@ -12,21 +12,21 @@ enum t { a, b, } fn main() { let x = a; - match x { b => { } } //~ ERROR non-exhaustive patterns: a not covered - match true { //~ ERROR non-exhaustive patterns: false not covered + match x { b => { } } //~ ERROR non-exhaustive patterns: `a` not covered + match true { //~ ERROR non-exhaustive patterns: `false` not covered true => {} } - match Some(10) { //~ ERROR non-exhaustive patterns: core::option::Some(_) not covered + match Some(10) { //~ ERROR non-exhaustive patterns: `Some(_)` not covered None => {} } - match (2, 3, 4) { //~ ERROR non-exhaustive patterns: (_, _, _) not covered + match (2, 3, 4) { //~ ERROR non-exhaustive patterns: `(_, _, _)` not covered (_, _, 4) => {} } - match (a, a) { //~ ERROR non-exhaustive patterns: (a, a) not covered + match (a, a) { //~ ERROR non-exhaustive patterns: `(a, a)` not covered (a, b) => {} (b, a) => {} } - match a { //~ ERROR non-exhaustive patterns: b not covered + match a { //~ ERROR non-exhaustive patterns: `b` not covered a => {} } // This is exhaustive, though the algorithm got it wrong at one point @@ -37,7 +37,7 @@ fn main() { } let vec = vec!(Some(42), None, Some(21)); let vec: &[Option<int>] = vec.as_slice(); - match vec { //~ ERROR non-exhaustive patterns: [] not covered + match vec { //~ ERROR non-exhaustive patterns: `[]` not covered [Some(..), None, ..tail] => {} [Some(..), Some(..), ..tail] => {} [None] => {} @@ -50,7 +50,7 @@ fn main() { } let vec = vec!(0.5); let vec: &[f32] = vec.as_slice(); - match vec { //~ ERROR non-exhaustive patterns: [_, _, _, _] not covered + match vec { //~ ERROR non-exhaustive patterns: `[_, _, _, _]` not covered [0.1, 0.2, 0.3] => (), [0.1, 0.2] => (), [0.1] => (), diff --git a/src/test/compile-fail/non-exhaustive-pattern-witness.rs b/src/test/compile-fail/non-exhaustive-pattern-witness.rs new file mode 100644 index 00000000000..22e93d70858 --- /dev/null +++ b/src/test/compile-fail/non-exhaustive-pattern-witness.rs @@ -0,0 +1,74 @@ +// 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 <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. + +#![feature(struct_variant)] + +struct Foo { + first: bool, + second: Option<[uint, ..4]> +} + +enum Color { + Red, + Green, + CustomRGBA { a: bool, r: u8, g: u8, b: u8 } +} + +fn struct_with_a_nested_enum_and_vector() { + match Foo { first: true, second: None } { + //~^ ERROR non-exhaustive patterns: `Foo{first: false, second: Some([_, _, _, _])}` not covered + Foo { first: true, second: None } => (), + Foo { first: true, second: Some(_) } => (), + Foo { first: false, second: None } => (), + Foo { first: false, second: Some([1u, 2u, 3u, 4u]) } => () + } +} + +fn enum_with_multiple_missing_variants() { + match Red { + //~^ ERROR non-exhaustive patterns: `Red` not covered + CustomRGBA { .. } => () + } +} + +fn enum_struct_variant() { + match Red { + //~^ ERROR non-exhaustive patterns: `CustomRGBA{a: true, r: _, g: _, b: _}` not covered + Red => (), + Green => (), + CustomRGBA { a: false, r: _, g: _, b: 0 } => (), + CustomRGBA { a: false, r: _, g: _, b: _ } => () + } +} + +enum Enum { + First, + Second(bool) +} + +fn vectors_with_nested_enums() { + let x: &'static [Enum] = [First, Second(false)]; + match x { + //~^ ERROR non-exhaustive patterns: `[Second(true), Second(false)]` not covered + [] => (), + [_] => (), + [First, _] => (), + [Second(true), First] => (), + [Second(true), Second(true)] => (), + [Second(false), _] => (), + [_, _, ..tail, _] => () + } +} + +fn main() { + struct_with_a_nested_enum_and_vector(); + enum_with_multiple_missing_variants(); + enum_struct_variant(); +} \ No newline at end of file diff --git a/src/test/compile-fail/refutable-pattern-errors.rs b/src/test/compile-fail/refutable-pattern-errors.rs index d664ea10b98..9128ee68e26 100644 --- a/src/test/compile-fail/refutable-pattern-errors.rs +++ b/src/test/compile-fail/refutable-pattern-errors.rs @@ -10,9 +10,9 @@ fn func((1, (Some(1), 2..3)): (int, (Option<int>, int))) { } -//~^ ERROR refutable pattern in function argument: (_, _) not covered +//~^ ERROR refutable pattern in function argument: `(_, _)` not covered fn main() { let (1, (Some(1), 2..3)) = (1, (None, 2)); - //~^ ERROR refutable pattern in local binding: (_, _) not covered + //~^ ERROR refutable pattern in local binding: `(_, _)` not covered } diff --git a/src/test/compile-fail/refutable-pattern-in-fn-arg.rs b/src/test/compile-fail/refutable-pattern-in-fn-arg.rs index 064957979f7..954d4b23e30 100644 --- a/src/test/compile-fail/refutable-pattern-in-fn-arg.rs +++ b/src/test/compile-fail/refutable-pattern-in-fn-arg.rs @@ -10,6 +10,6 @@ fn main() { let f = |3: int| println!("hello"); - //~^ ERROR refutable pattern in function argument: _ not covered + //~^ ERROR refutable pattern in function argument: `_` not covered f(4); } diff --git a/src/test/run-pass/issue-7784.rs b/src/test/run-pass/issue-7784.rs index 06d22149b81..52c2d57753a 100644 --- a/src/test/run-pass/issue-7784.rs +++ b/src/test/run-pass/issue-7784.rs @@ -27,4 +27,10 @@ fn main() { let [a, _, _, d] = bar("baz", "foo"); assert_eq!(a, "baz"); assert_eq!(d, "baz"); + + let out = bar("baz", "foo"); + let [a, ..xs, d] = out; + assert_eq!(a, "baz"); + assert!(xs == ["foo", "foo"]); + assert_eq!(d, "baz"); } \ No newline at end of file |
