about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2017-11-05 04:22:18 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2017-11-11 15:44:19 +0300
commit1055bdfb2a5ced99bb47c344c91af2f324ebbb6d (patch)
tree085fbbd4b5015fa5cd63f1b5c26e9e52771db301 /src/test
parent69ee5a8a9787336f8635ec12ed0c6199a70505e0 (diff)
downloadrust-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.rs37
-rw-r--r--src/test/compile-fail/no-patterns-in-args.rs4
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