diff options
| author | bors <bors@rust-lang.org> | 2018-08-25 22:50:12 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-08-25 22:50:12 +0000 |
| commit | f272688bbb1e007126384e8a0474ec1ea64dc481 (patch) | |
| tree | 0336c6ffc3684e6ab57ffbe4fae15e57ea382976 | |
| parent | 39e6ba82182b264c94bc62a1284d115b50ff1bd3 (diff) | |
| parent | b32b6e803b8e7ad1ee2258ef5784af7e4010be4b (diff) | |
| download | rust-f272688bbb1e007126384e8a0474ec1ea64dc481.tar.gz rust-f272688bbb1e007126384e8a0474ec1ea64dc481.zip | |
Auto merge of #53612 - mark-i-m:anon_param_disallowed_2018, r=petrochenkov
Remove anonymous trait params from 2018 and beyond cc @Centril @nikomatsakis cc #41686 rust-lang/rfcs#2522 #53272 This PR removes support for anonymous trait parameters syntactically in rust 2018 and onward. TODO: - [x] Add tests
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 8 | ||||
| -rw-r--r-- | src/test/ui/anon-params-denied-2018.rs | 12 | ||||
| -rw-r--r-- | src/test/ui/anon-params-denied-2018.stderr | 14 | ||||
| -rw-r--r-- | src/test/ui/anon-params-deprecated.fixed | 19 | ||||
| -rw-r--r-- | src/test/ui/anon-params-deprecated.rs | 22 | ||||
| -rw-r--r-- | src/test/ui/anon-params-deprecated.stderr | 22 | ||||
| -rw-r--r-- | src/test/ui/lint/lint-anon-param-edition.fixed | 23 | ||||
| -rw-r--r-- | src/test/ui/lint/lint-anon-param-edition.rs | 23 | ||||
| -rw-r--r-- | src/test/ui/lint/lint-anon-param-edition.stderr | 10 |
9 files changed, 70 insertions, 83 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 725360b842d..1695d3a8f96 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -1376,7 +1376,13 @@ impl<'a> Parser<'a> { // This is somewhat dubious; We don't want to allow // argument names to be left off if there is a // definition... - p.parse_arg_general(false) + + // We don't allow argument names to be left off in edition 2018. + if p.span.edition() >= Edition::Edition2018 { + p.parse_arg_general(true) + } else { + p.parse_arg_general(false) + } })?; generics.where_clause = self.parse_where_clause()?; diff --git a/src/test/ui/anon-params-denied-2018.rs b/src/test/ui/anon-params-denied-2018.rs new file mode 100644 index 00000000000..5e77aa8fbb9 --- /dev/null +++ b/src/test/ui/anon-params-denied-2018.rs @@ -0,0 +1,12 @@ +// Tests that anonymous parameters are a hard error in edition 2018. + +// edition:2018 + +trait T { + fn foo(i32); //~ expected one of `:` or `@`, found `)` + + fn bar_with_default_impl(String, String) {} + //~^ ERROR expected one of `:` or `@`, found `,` +} + +fn main() {} diff --git a/src/test/ui/anon-params-denied-2018.stderr b/src/test/ui/anon-params-denied-2018.stderr new file mode 100644 index 00000000000..24a1e6ecd93 --- /dev/null +++ b/src/test/ui/anon-params-denied-2018.stderr @@ -0,0 +1,14 @@ +error: expected one of `:` or `@`, found `)` + --> $DIR/anon-params-denied-2018.rs:6:15 + | +LL | fn foo(i32); //~ expected one of `:` or `@`, found `)` + | ^ expected one of `:` or `@` here + +error: expected one of `:` or `@`, found `,` + --> $DIR/anon-params-denied-2018.rs:8:36 + | +LL | fn bar_with_default_impl(String, String) {} + | ^ expected one of `:` or `@` here + +error: aborting due to 2 previous errors + diff --git a/src/test/ui/anon-params-deprecated.fixed b/src/test/ui/anon-params-deprecated.fixed new file mode 100644 index 00000000000..7eee47dcb5f --- /dev/null +++ b/src/test/ui/anon-params-deprecated.fixed @@ -0,0 +1,19 @@ +#![warn(anonymous_parameters)] +// Test for the anonymous_parameters deprecation lint (RFC 1685) + +// compile-pass +// edition:2015 +// run-rustfix + +trait T { + fn foo(_: i32); //~ WARNING anonymous parameters are deprecated + //~| WARNING hard error + + fn bar_with_default_impl(_: String, _: String) {} + //~^ WARNING anonymous parameters are deprecated + //~| WARNING hard error + //~| WARNING anonymous parameters are deprecated + //~| WARNING hard error +} + +fn main() {} diff --git a/src/test/ui/anon-params-deprecated.rs b/src/test/ui/anon-params-deprecated.rs index 4d37ba920f3..74de0c0b834 100644 --- a/src/test/ui/anon-params-deprecated.rs +++ b/src/test/ui/anon-params-deprecated.rs @@ -1,24 +1,18 @@ -// 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. - -#![forbid(anonymous_parameters)] +#![warn(anonymous_parameters)] // Test for the anonymous_parameters deprecation lint (RFC 1685) +// compile-pass +// edition:2015 +// run-rustfix + trait T { - fn foo(i32); //~ ERROR anonymous parameters are deprecated + fn foo(i32); //~ WARNING anonymous parameters are deprecated //~| WARNING hard error fn bar_with_default_impl(String, String) {} - //~^ ERROR anonymous parameters are deprecated + //~^ WARNING anonymous parameters are deprecated //~| WARNING hard error - //~| ERROR anonymous parameters are deprecated + //~| WARNING anonymous parameters are deprecated //~| WARNING hard error } diff --git a/src/test/ui/anon-params-deprecated.stderr b/src/test/ui/anon-params-deprecated.stderr index fa13b8d97e5..e1c27ceefa9 100644 --- a/src/test/ui/anon-params-deprecated.stderr +++ b/src/test/ui/anon-params-deprecated.stderr @@ -1,19 +1,19 @@ -error: anonymous parameters are deprecated and will be removed in the next edition. - --> $DIR/anon-params-deprecated.rs:15:12 +warning: anonymous parameters are deprecated and will be removed in the next edition. + --> $DIR/anon-params-deprecated.rs:9:12 | -LL | fn foo(i32); //~ ERROR anonymous parameters are deprecated +LL | fn foo(i32); //~ WARNING anonymous parameters are deprecated | ^^^ help: Try naming the parameter or explicitly ignoring it: `_: i32` | note: lint level defined here - --> $DIR/anon-params-deprecated.rs:11:11 + --> $DIR/anon-params-deprecated.rs:1:9 | -LL | #![forbid(anonymous_parameters)] - | ^^^^^^^^^^^^^^^^^^^^ +LL | #![warn(anonymous_parameters)] + | ^^^^^^^^^^^^^^^^^^^^ = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: for more information, see issue #41686 <https://github.com/rust-lang/rust/issues/41686> -error: anonymous parameters are deprecated and will be removed in the next edition. - --> $DIR/anon-params-deprecated.rs:18:30 +warning: anonymous parameters are deprecated and will be removed in the next edition. + --> $DIR/anon-params-deprecated.rs:12:30 | LL | fn bar_with_default_impl(String, String) {} | ^^^^^^ help: Try naming the parameter or explicitly ignoring it: `_: String` @@ -21,8 +21,8 @@ LL | fn bar_with_default_impl(String, String) {} = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: for more information, see issue #41686 <https://github.com/rust-lang/rust/issues/41686> -error: anonymous parameters are deprecated and will be removed in the next edition. - --> $DIR/anon-params-deprecated.rs:18:38 +warning: anonymous parameters are deprecated and will be removed in the next edition. + --> $DIR/anon-params-deprecated.rs:12:38 | LL | fn bar_with_default_impl(String, String) {} | ^^^^^^ help: Try naming the parameter or explicitly ignoring it: `_: String` @@ -30,5 +30,3 @@ LL | fn bar_with_default_impl(String, String) {} = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: for more information, see issue #41686 <https://github.com/rust-lang/rust/issues/41686> -error: aborting due to 3 previous errors - diff --git a/src/test/ui/lint/lint-anon-param-edition.fixed b/src/test/ui/lint/lint-anon-param-edition.fixed deleted file mode 100644 index c4379b496f8..00000000000 --- a/src/test/ui/lint/lint-anon-param-edition.fixed +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2016 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. - -// tests that the anonymous_parameters lint is warn-by-default on the 2018 edition - -// compile-pass -// edition:2018 -// run-rustfix - -trait Foo { - fn foo(_: u8); - //^ WARN anonymous parameters are deprecated - //| WARN this was previously accepted -} - -fn main() {} diff --git a/src/test/ui/lint/lint-anon-param-edition.rs b/src/test/ui/lint/lint-anon-param-edition.rs deleted file mode 100644 index 13eb5dfd816..00000000000 --- a/src/test/ui/lint/lint-anon-param-edition.rs +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2016 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. - -// tests that the anonymous_parameters lint is warn-by-default on the 2018 edition - -// compile-pass -// edition:2018 -// run-rustfix - -trait Foo { - fn foo(u8); - //^ WARN anonymous parameters are deprecated - //| WARN this was previously accepted -} - -fn main() {} diff --git a/src/test/ui/lint/lint-anon-param-edition.stderr b/src/test/ui/lint/lint-anon-param-edition.stderr deleted file mode 100644 index de347770aec..00000000000 --- a/src/test/ui/lint/lint-anon-param-edition.stderr +++ /dev/null @@ -1,10 +0,0 @@ -warning: anonymous parameters are deprecated and will be removed in the next edition. - --> $DIR/lint-anon-param-edition.rs:18:12 - | -LL | fn foo(u8); - | ^^ help: Try naming the parameter or explicitly ignoring it: `_: u8` - | - = note: #[warn(anonymous_parameters)] on by default - = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! - = note: for more information, see issue #41686 <https://github.com/rust-lang/rust/issues/41686> - |
