mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-26 05:44:26 +00:00
Add context for RFC 1685 change in 2018 edition.
This commit adds a note providing context for the change to argument names being required in the 2018 edition for trait methods.
This commit is contained in:
parent
a2fb99bc17
commit
e4dc15a969
@ -1404,7 +1404,7 @@ impl<'a> Parser<'a> {
|
|||||||
// definition...
|
// definition...
|
||||||
|
|
||||||
// We don't allow argument names to be left off in edition 2018.
|
// We don't allow argument names to be left off in edition 2018.
|
||||||
p.parse_arg_general(p.span.rust_2018())
|
p.parse_arg_general(p.span.rust_2018(), true)
|
||||||
})?;
|
})?;
|
||||||
generics.where_clause = self.parse_where_clause()?;
|
generics.where_clause = self.parse_where_clause()?;
|
||||||
|
|
||||||
@ -1817,7 +1817,7 @@ impl<'a> Parser<'a> {
|
|||||||
|
|
||||||
/// This version of parse arg doesn't necessarily require
|
/// This version of parse arg doesn't necessarily require
|
||||||
/// identifier names.
|
/// identifier names.
|
||||||
fn parse_arg_general(&mut self, require_name: bool) -> PResult<'a, Arg> {
|
fn parse_arg_general(&mut self, require_name: bool, is_trait_item: bool) -> PResult<'a, Arg> {
|
||||||
maybe_whole!(self, NtArg, |x| x);
|
maybe_whole!(self, NtArg, |x| x);
|
||||||
|
|
||||||
if let Ok(Some(_)) = self.parse_self_arg() {
|
if let Ok(Some(_)) = self.parse_self_arg() {
|
||||||
@ -1849,6 +1849,8 @@ impl<'a> Parser<'a> {
|
|||||||
String::from("<identifier>: <type>"),
|
String::from("<identifier>: <type>"),
|
||||||
Applicability::HasPlaceholders,
|
Applicability::HasPlaceholders,
|
||||||
);
|
);
|
||||||
|
} else if require_name && is_trait_item {
|
||||||
|
err.note("anonymous parameters are removed in the 2018 edition (see RFC 1685)");
|
||||||
}
|
}
|
||||||
|
|
||||||
return Err(err);
|
return Err(err);
|
||||||
@ -1914,7 +1916,7 @@ impl<'a> Parser<'a> {
|
|||||||
|
|
||||||
/// Parse a single function argument
|
/// Parse a single function argument
|
||||||
crate fn parse_arg(&mut self) -> PResult<'a, Arg> {
|
crate fn parse_arg(&mut self) -> PResult<'a, Arg> {
|
||||||
self.parse_arg_general(true)
|
self.parse_arg_general(true, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Parse an argument in a lambda header e.g. |arg, arg|
|
/// Parse an argument in a lambda header e.g. |arg, arg|
|
||||||
@ -5469,7 +5471,7 @@ impl<'a> Parser<'a> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
match p.parse_arg_general(named_args) {
|
match p.parse_arg_general(named_args, false) {
|
||||||
Ok(arg) => Ok(Some(arg)),
|
Ok(arg) => Ok(Some(arg)),
|
||||||
Err(mut e) => {
|
Err(mut e) => {
|
||||||
e.emit();
|
e.emit();
|
||||||
|
@ -3,12 +3,16 @@ error: expected one of `:` or `@`, found `)`
|
|||||||
|
|
|
|
||||||
LL | fn foo(i32); //~ expected one of `:` or `@`, found `)`
|
LL | fn foo(i32); //~ expected one of `:` or `@`, found `)`
|
||||||
| ^ expected one of `:` or `@` here
|
| ^ expected one of `:` or `@` here
|
||||||
|
|
|
||||||
|
= note: anonymous parameters are removed in the 2018 edition (see RFC 1685)
|
||||||
|
|
||||||
error: expected one of `:` or `@`, found `,`
|
error: expected one of `:` or `@`, found `,`
|
||||||
--> $DIR/anon-params-denied-2018.rs:8:36
|
--> $DIR/anon-params-denied-2018.rs:8:36
|
||||||
|
|
|
|
||||||
LL | fn bar_with_default_impl(String, String) {}
|
LL | fn bar_with_default_impl(String, String) {}
|
||||||
| ^ expected one of `:` or `@` here
|
| ^ expected one of `:` or `@` here
|
||||||
|
|
|
||||||
|
= note: anonymous parameters are removed in the 2018 edition (see RFC 1685)
|
||||||
|
|
||||||
error: aborting due to 2 previous errors
|
error: aborting due to 2 previous errors
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user