summaryrefslogtreecommitdiffstats
path: root/tests/ui/argument-suggestions
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/argument-suggestions')
-rw-r--r--tests/ui/argument-suggestions/extra_arguments.rs26
-rw-r--r--tests/ui/argument-suggestions/extra_arguments.stderr148
2 files changed, 145 insertions, 29 deletions
diff --git a/tests/ui/argument-suggestions/extra_arguments.rs b/tests/ui/argument-suggestions/extra_arguments.rs
index 144206232..4f2f3517d 100644
--- a/tests/ui/argument-suggestions/extra_arguments.rs
+++ b/tests/ui/argument-suggestions/extra_arguments.rs
@@ -1,12 +1,18 @@
fn empty() {}
-fn one_arg(_a: i32) {}
+fn one_arg<T>(_a: T) {}
fn two_arg_same(_a: i32, _b: i32) {}
fn two_arg_diff(_a: i32, _b: &str) {}
macro_rules! foo {
- ($x:expr) => {
+ ($x:expr, ~) => {
empty($x, 1); //~ ERROR function takes
- }
+ };
+ ($x:expr, $y:expr) => {
+ empty($x, $y); //~ ERROR function takes
+ };
+ (~, $y:expr) => {
+ empty(1, $y); //~ ERROR function takes
+ };
}
fn main() {
@@ -39,5 +45,17 @@ fn main() {
1,
""
);
- foo!(1);
+
+ // Check with macro expansions
+ foo!(1, ~);
+ foo!(~, 1);
+ foo!(1, 1);
+ one_arg(1, panic!()); //~ ERROR function takes
+ one_arg(panic!(), 1); //~ ERROR function takes
+ one_arg(stringify!($e), 1); //~ ERROR function takes
+
+ // Not a macro, but this also has multiple spans with equal source code,
+ // but different expansion contexts.
+ // https://github.com/rust-lang/rust/issues/114255
+ one_arg(for _ in 1.. {}, 1); //~ ERROR function takes
}
diff --git a/tests/ui/argument-suggestions/extra_arguments.stderr b/tests/ui/argument-suggestions/extra_arguments.stderr
index 11c710997..5ad8e3592 100644
--- a/tests/ui/argument-suggestions/extra_arguments.stderr
+++ b/tests/ui/argument-suggestions/extra_arguments.stderr
@@ -1,5 +1,5 @@
error[E0061]: this function takes 0 arguments but 1 argument was supplied
- --> $DIR/extra_arguments.rs:13:3
+ --> $DIR/extra_arguments.rs:19:3
|
LL | empty("");
| ^^^^^ --
@@ -14,7 +14,7 @@ LL | fn empty() {}
| ^^^^^
error[E0061]: this function takes 0 arguments but 2 arguments were supplied
- --> $DIR/extra_arguments.rs:14:3
+ --> $DIR/extra_arguments.rs:20:3
|
LL | empty(1, 1);
| ^^^^^ - - unexpected argument of type `{integer}`
@@ -33,7 +33,7 @@ LL + empty();
|
error[E0061]: this function takes 1 argument but 2 arguments were supplied
- --> $DIR/extra_arguments.rs:16:3
+ --> $DIR/extra_arguments.rs:22:3
|
LL | one_arg(1, 1);
| ^^^^^^^ ---
@@ -44,11 +44,11 @@ LL | one_arg(1, 1);
note: function defined here
--> $DIR/extra_arguments.rs:2:4
|
-LL | fn one_arg(_a: i32) {}
- | ^^^^^^^ -------
+LL | fn one_arg<T>(_a: T) {}
+ | ^^^^^^^ -----
error[E0061]: this function takes 1 argument but 2 arguments were supplied
- --> $DIR/extra_arguments.rs:17:3
+ --> $DIR/extra_arguments.rs:23:3
|
LL | one_arg(1, "");
| ^^^^^^^ ----
@@ -59,11 +59,11 @@ LL | one_arg(1, "");
note: function defined here
--> $DIR/extra_arguments.rs:2:4
|
-LL | fn one_arg(_a: i32) {}
- | ^^^^^^^ -------
+LL | fn one_arg<T>(_a: T) {}
+ | ^^^^^^^ -----
error[E0061]: this function takes 1 argument but 3 arguments were supplied
- --> $DIR/extra_arguments.rs:18:3
+ --> $DIR/extra_arguments.rs:24:3
|
LL | one_arg(1, "", 1.0);
| ^^^^^^^ -- --- unexpected argument of type `{float}`
@@ -73,8 +73,8 @@ LL | one_arg(1, "", 1.0);
note: function defined here
--> $DIR/extra_arguments.rs:2:4
|
-LL | fn one_arg(_a: i32) {}
- | ^^^^^^^ -------
+LL | fn one_arg<T>(_a: T) {}
+ | ^^^^^^^ -----
help: remove the extra arguments
|
LL - one_arg(1, "", 1.0);
@@ -82,7 +82,7 @@ LL + one_arg(1);
|
error[E0061]: this function takes 2 arguments but 3 arguments were supplied
- --> $DIR/extra_arguments.rs:20:3
+ --> $DIR/extra_arguments.rs:26:3
|
LL | two_arg_same(1, 1, 1);
| ^^^^^^^^^^^^ ---
@@ -97,7 +97,7 @@ LL | fn two_arg_same(_a: i32, _b: i32) {}
| ^^^^^^^^^^^^ ------- -------
error[E0061]: this function takes 2 arguments but 3 arguments were supplied
- --> $DIR/extra_arguments.rs:21:3
+ --> $DIR/extra_arguments.rs:27:3
|
LL | two_arg_same(1, 1, 1.0);
| ^^^^^^^^^^^^ -----
@@ -112,7 +112,7 @@ LL | fn two_arg_same(_a: i32, _b: i32) {}
| ^^^^^^^^^^^^ ------- -------
error[E0061]: this function takes 2 arguments but 3 arguments were supplied
- --> $DIR/extra_arguments.rs:23:3
+ --> $DIR/extra_arguments.rs:29:3
|
LL | two_arg_diff(1, 1, "");
| ^^^^^^^^^^^^ ---
@@ -127,7 +127,7 @@ LL | fn two_arg_diff(_a: i32, _b: &str) {}
| ^^^^^^^^^^^^ ------- --------
error[E0061]: this function takes 2 arguments but 3 arguments were supplied
- --> $DIR/extra_arguments.rs:24:3
+ --> $DIR/extra_arguments.rs:30:3
|
LL | two_arg_diff(1, "", "");
| ^^^^^^^^^^^^ ----
@@ -142,7 +142,7 @@ LL | fn two_arg_diff(_a: i32, _b: &str) {}
| ^^^^^^^^^^^^ ------- --------
error[E0061]: this function takes 2 arguments but 4 arguments were supplied
- --> $DIR/extra_arguments.rs:25:3
+ --> $DIR/extra_arguments.rs:31:3
|
LL | two_arg_diff(1, 1, "", "");
| ^^^^^^^^^^^^ - -- unexpected argument of type `&'static str`
@@ -161,7 +161,7 @@ LL + two_arg_diff(1, "");
|
error[E0061]: this function takes 2 arguments but 4 arguments were supplied
- --> $DIR/extra_arguments.rs:26:3
+ --> $DIR/extra_arguments.rs:32:3
|
LL | two_arg_diff(1, "", 1, "");
| ^^^^^^^^^^^^ - -- unexpected argument of type `&'static str`
@@ -180,7 +180,7 @@ LL + two_arg_diff(1, "");
|
error[E0061]: this function takes 2 arguments but 3 arguments were supplied
- --> $DIR/extra_arguments.rs:29:3
+ --> $DIR/extra_arguments.rs:35:3
|
LL | two_arg_same(1, 1, "");
| ^^^^^^^^^^^^ --------
@@ -195,7 +195,7 @@ LL | fn two_arg_same(_a: i32, _b: i32) {}
| ^^^^^^^^^^^^ ------- -------
error[E0061]: this function takes 2 arguments but 3 arguments were supplied
- --> $DIR/extra_arguments.rs:30:3
+ --> $DIR/extra_arguments.rs:36:3
|
LL | two_arg_diff(1, 1, "");
| ^^^^^^^^^^^^ ---
@@ -210,7 +210,7 @@ LL | fn two_arg_diff(_a: i32, _b: &str) {}
| ^^^^^^^^^^^^ ------- --------
error[E0061]: this function takes 2 arguments but 3 arguments were supplied
- --> $DIR/extra_arguments.rs:31:3
+ --> $DIR/extra_arguments.rs:37:3
|
LL | two_arg_same(
| ^^^^^^^^^^^^
@@ -230,7 +230,7 @@ LL | fn two_arg_same(_a: i32, _b: i32) {}
| ^^^^^^^^^^^^ ------- -------
error[E0061]: this function takes 2 arguments but 3 arguments were supplied
- --> $DIR/extra_arguments.rs:37:3
+ --> $DIR/extra_arguments.rs:43:3
|
LL | two_arg_diff(
| ^^^^^^^^^^^^
@@ -254,11 +254,10 @@ error[E0061]: this function takes 0 arguments but 2 arguments were supplied
LL | empty($x, 1);
| ^^^^^ - unexpected argument of type `{integer}`
...
-LL | foo!(1);
- | -------
+LL | foo!(1, ~);
+ | ----------
| | |
| | unexpected argument of type `{integer}`
- | | help: remove the extra argument
| in this macro invocation
|
note: function defined here
@@ -268,6 +267,105 @@ LL | fn empty() {}
| ^^^^^
= note: this error originates in the macro `foo` (in Nightly builds, run with -Z macro-backtrace for more info)
-error: aborting due to 16 previous errors
+error[E0061]: this function takes 0 arguments but 2 arguments were supplied
+ --> $DIR/extra_arguments.rs:14:9
+ |
+LL | empty(1, $y);
+ | ^^^^^ - unexpected argument of type `{integer}`
+...
+LL | foo!(~, 1);
+ | ----------
+ | | |
+ | | unexpected argument of type `{integer}`
+ | in this macro invocation
+ |
+note: function defined here
+ --> $DIR/extra_arguments.rs:1:4
+ |
+LL | fn empty() {}
+ | ^^^^^
+ = note: this error originates in the macro `foo` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0061]: this function takes 0 arguments but 2 arguments were supplied
+ --> $DIR/extra_arguments.rs:11:9
+ |
+LL | empty($x, $y);
+ | ^^^^^
+...
+LL | foo!(1, 1);
+ | ----------
+ | | | |
+ | | | unexpected argument of type `{integer}`
+ | | unexpected argument of type `{integer}`
+ | in this macro invocation
+ |
+note: function defined here
+ --> $DIR/extra_arguments.rs:1:4
+ |
+LL | fn empty() {}
+ | ^^^^^
+ = note: this error originates in the macro `foo` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0061]: this function takes 1 argument but 2 arguments were supplied
+ --> $DIR/extra_arguments.rs:53:3
+ |
+LL | one_arg(1, panic!());
+ | ^^^^^^^ ----------
+ | | |
+ | | unexpected argument
+ | help: remove the extra argument
+ |
+note: function defined here
+ --> $DIR/extra_arguments.rs:2:4
+ |
+LL | fn one_arg<T>(_a: T) {}
+ | ^^^^^^^ -----
+
+error[E0061]: this function takes 1 argument but 2 arguments were supplied
+ --> $DIR/extra_arguments.rs:54:3
+ |
+LL | one_arg(panic!(), 1);
+ | ^^^^^^^ ---
+ | | |
+ | | unexpected argument of type `{integer}`
+ | help: remove the extra argument
+ |
+note: function defined here
+ --> $DIR/extra_arguments.rs:2:4
+ |
+LL | fn one_arg<T>(_a: T) {}
+ | ^^^^^^^ -----
+
+error[E0061]: this function takes 1 argument but 2 arguments were supplied
+ --> $DIR/extra_arguments.rs:55:3
+ |
+LL | one_arg(stringify!($e), 1);
+ | ^^^^^^^ ---
+ | | |
+ | | unexpected argument of type `{integer}`
+ | help: remove the extra argument
+ |
+note: function defined here
+ --> $DIR/extra_arguments.rs:2:4
+ |
+LL | fn one_arg<T>(_a: T) {}
+ | ^^^^^^^ -----
+
+error[E0061]: this function takes 1 argument but 2 arguments were supplied
+ --> $DIR/extra_arguments.rs:60:3
+ |
+LL | one_arg(for _ in 1.. {}, 1);
+ | ^^^^^^^ ---
+ | | |
+ | | unexpected argument of type `{integer}`
+ | help: remove the extra argument
+ |
+note: function defined here
+ --> $DIR/extra_arguments.rs:2:4
+ |
+LL | fn one_arg<T>(_a: T) {}
+ | ^^^^^^^ -----
+
+error: aborting due to 22 previous errors
For more information about this error, try `rustc --explain E0061`.