diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2017-11-05 04:22:18 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2017-11-11 15:44:19 +0300 |
| commit | 1055bdfb2a5ced99bb47c344c91af2f324ebbb6d (patch) | |
| tree | 085fbbd4b5015fa5cd63f1b5c26e9e52771db301 /src/test | |
| parent | 69ee5a8a9787336f8635ec12ed0c6199a70505e0 (diff) | |
| download | rust-1055bdfb2a5ced99bb47c344c91af2f324ebbb6d.tar.gz rust-1055bdfb2a5ced99bb47c344c91af2f324ebbb6d.zip | |
Accept interpolated patterns in trait method parameters
Remove some outdated messages from "no patterns allowed" errors
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/compile-fail/no-patterns-in-args-macro.rs | 37 | ||||
| -rw-r--r-- | src/test/compile-fail/no-patterns-in-args.rs | 4 |
2 files changed, 37 insertions, 4 deletions
diff --git a/src/test/compile-fail/no-patterns-in-args-macro.rs b/src/test/compile-fail/no-patterns-in-args-macro.rs new file mode 100644 index 00000000000..3aabd19f6e6 --- /dev/null +++ b/src/test/compile-fail/no-patterns-in-args-macro.rs @@ -0,0 +1,37 @@ +// 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. + +macro_rules! m { + ($pat: pat) => { + trait Tr { + fn trait_method($pat: u8); + } + + type A = fn($pat: u8); + + extern { + fn foreign_fn($pat: u8); + } + } +} + +mod good_pat { + m!(good_pat); // OK +} + +mod bad_pat { + m!((bad, pat)); + //~^ ERROR patterns aren't allowed in function pointer types + //~| ERROR patterns aren't allowed in foreign function declarations + //~| WARN patterns aren't allowed in methods without bodies + //~| WARN this was previously accepted +} + +fn main() {} diff --git a/src/test/compile-fail/no-patterns-in-args.rs b/src/test/compile-fail/no-patterns-in-args.rs index b0278476998..081d6caaa13 100644 --- a/src/test/compile-fail/no-patterns-in-args.rs +++ b/src/test/compile-fail/no-patterns-in-args.rs @@ -11,21 +11,17 @@ extern { fn f1(mut arg: u8); //~ ERROR patterns aren't allowed in foreign function declarations //~^ NOTE pattern not allowed in foreign function - //~| NOTE this is a recent error fn f2(&arg: u8); //~ ERROR patterns aren't allowed in foreign function declarations //~^ NOTE pattern not allowed in foreign function fn f3(arg @ _: u8); //~ ERROR patterns aren't allowed in foreign function declarations //~^ NOTE pattern not allowed in foreign function - //~| NOTE this is a recent error fn g1(arg: u8); // OK fn g2(_: u8); // OK // fn g3(u8); // Not yet } type A1 = fn(mut arg: u8); //~ ERROR patterns aren't allowed in function pointer types - //~^ NOTE this is a recent error type A2 = fn(&arg: u8); //~ ERROR patterns aren't allowed in function pointer types - //~^ NOTE this is a recent error type B1 = fn(arg: u8); // OK type B2 = fn(_: u8); // OK type B3 = fn(u8); // OK |
