about summary refs log tree commit diff
path: root/src/test/ui/parser
diff options
context:
space:
mode:
authorAndy Russell <arussell123@gmail.com>2018-10-03 22:21:05 -0400
committerAndy Russell <arussell123@gmail.com>2018-10-05 10:33:19 -0400
commitf5db4114102861acd004c8104dde7372010b156e (patch)
treed172d69f72e0f9fca4a2323a5b840c281e01f57f /src/test/ui/parser
parent6ddab3e078bc25bd101d6885427b8a1032f8f60c (diff)
downloadrust-f5db4114102861acd004c8104dde7372010b156e.tar.gz
rust-f5db4114102861acd004c8104dde7372010b156e.zip
add suggestion for inverted function parameters
Fixes #54065.
Diffstat (limited to 'src/test/ui/parser')
-rw-r--r--src/test/ui/parser/inverted-parameters.rs39
-rw-r--r--src/test/ui/parser/inverted-parameters.stderr47
2 files changed, 86 insertions, 0 deletions
diff --git a/src/test/ui/parser/inverted-parameters.rs b/src/test/ui/parser/inverted-parameters.rs
new file mode 100644
index 00000000000..a100debbf12
--- /dev/null
+++ b/src/test/ui/parser/inverted-parameters.rs
@@ -0,0 +1,39 @@
+// Copyright 2018 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;
+
+impl S {
+    fn foo(&self, &str bar) {}
+    //~^ ERROR expected one of `:` or `@`
+    //~| HELP declare the type after the parameter binding
+    //~| SUGGESTION <identifier>: <type>
+}
+
+fn baz(S quux, xyzzy: i32) {}
+//~^ ERROR expected one of `:` or `@`
+//~| HELP declare the type after the parameter binding
+//~| SUGGESTION <identifier>: <type>
+
+fn one(i32 a b) {}
+//~^ ERROR expected one of `:` or `@`
+
+fn pattern((i32, i32) (a, b)) {}
+//~^ ERROR expected `:`
+
+fn fizz(i32) {}
+//~^ ERROR expected one of `:` or `@`
+
+fn missing_colon(quux S) {}
+//~^ ERROR expected one of `:` or `@`
+//~| HELP declare the type after the parameter binding
+//~| SUGGESTION <identifier>: <type>
+
+fn main() {}
diff --git a/src/test/ui/parser/inverted-parameters.stderr b/src/test/ui/parser/inverted-parameters.stderr
new file mode 100644
index 00000000000..3f4f0615bc8
--- /dev/null
+++ b/src/test/ui/parser/inverted-parameters.stderr
@@ -0,0 +1,47 @@
+error: expected one of `:` or `@`, found `bar`
+  --> $DIR/inverted-parameters.rs:14:24
+   |
+LL |     fn foo(&self, &str bar) {}
+   |                   -----^^^
+   |                   |    |
+   |                   |    expected one of `:` or `@` here
+   |                   help: declare the type after the parameter binding: `<identifier>: <type>`
+
+error: expected one of `:` or `@`, found `quux`
+  --> $DIR/inverted-parameters.rs:20:10
+   |
+LL | fn baz(S quux, xyzzy: i32) {}
+   |        --^^^^
+   |        | |
+   |        | expected one of `:` or `@` here
+   |        help: declare the type after the parameter binding: `<identifier>: <type>`
+
+error: expected one of `:` or `@`, found `a`
+  --> $DIR/inverted-parameters.rs:25:12
+   |
+LL | fn one(i32 a b) {}
+   |            ^ expected one of `:` or `@` here
+
+error: expected `:`, found `(`
+  --> $DIR/inverted-parameters.rs:28:23
+   |
+LL | fn pattern((i32, i32) (a, b)) {}
+   |                       ^ expected `:`
+
+error: expected one of `:` or `@`, found `)`
+  --> $DIR/inverted-parameters.rs:31:12
+   |
+LL | fn fizz(i32) {}
+   |            ^ expected one of `:` or `@` here
+
+error: expected one of `:` or `@`, found `S`
+  --> $DIR/inverted-parameters.rs:34:23
+   |
+LL | fn missing_colon(quux S) {}
+   |                  -----^
+   |                  |    |
+   |                  |    expected one of `:` or `@` here
+   |                  help: declare the type after the parameter binding: `<identifier>: <type>`
+
+error: aborting due to 6 previous errors
+