Auto merge of #53272 - mark-i-m:anon_param_error_now, r=nikomatsakis

Warn on anon params in 2015 edition

cc #41686 https://github.com/rust-lang/rfcs/pull/2522
cc  @Centril @nikomatsakis

TODO:
- [x] Make sure the tests pass.
- [x] Make sure there is rustfix-able suggestion. Current plan is to just suggest `_ : Foo`
- [x] Add a rustfix ui test.

EDIT: It seems I already did the last two in #48309
This commit is contained in:
bors 2018-08-28 01:04:05 +00:00
commit f33921ba58
10 changed files with 23 additions and 18 deletions

View file

@ -266,7 +266,7 @@ macro_rules! late_lint_methods {
macro_rules! expand_lint_pass_methods {
($context:ty, [$($(#[$attr:meta])* fn $name:ident($($param:ident: $arg:ty),*);)*]) => (
$(#[inline(always)] fn $name(&mut self, $context, $(_: $arg),*) {})*
$(#[inline(always)] fn $name(&mut self, _: $context, $(_: $arg),*) {})*
)
}

View file

@ -46,7 +46,6 @@ use syntax::tokenstream::{TokenTree, TokenStream};
use syntax::ast;
use syntax::attr;
use syntax::source_map::Spanned;
use syntax::edition::Edition;
use syntax::feature_gate::{AttributeGate, AttributeType, Stability, deprecated_attributes};
use syntax_pos::{BytePos, Span, SyntaxContext};
use syntax::symbol::keywords;
@ -629,8 +628,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for MissingDebugImplementations {
declare_lint! {
pub ANONYMOUS_PARAMETERS,
Allow,
"detects anonymous parameters",
Edition::Edition2018 => Warn
"detects anonymous parameters"
}
/// Checks for use of anonymous parameters (RFC 1685)

View file

@ -277,7 +277,7 @@ pub fn register_builtins(store: &mut lint::LintStore, sess: Option<&Session>) {
FutureIncompatibleInfo {
id: LintId::of(ANONYMOUS_PARAMETERS),
reference: "issue #41686 <https://github.com/rust-lang/rust/issues/41686>",
edition: None,
edition: Some(Edition::Edition2018),
},
FutureIncompatibleInfo {
id: LintId::of(PARENTHESIZED_PARAMS_IN_TYPES_AND_MODULES),

View file

@ -152,7 +152,14 @@ type StackWalk64Fn = unsafe extern "system" fn(
trait StackWalker {
type Item: StackFrame;
fn walk(&self, c::DWORD, c::HANDLE, c::HANDLE, &mut Self::Item, &mut c::CONTEXT) -> c::BOOL;
fn walk(
&self,
_: c::DWORD,
_: c::HANDLE,
_: c::HANDLE,
_: &mut Self::Item,
_: &mut c::CONTEXT
) -> c::BOOL;
}
impl StackWalker for StackWalkExFn {

View file

@ -9,7 +9,7 @@ note: lint level defined here
|
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!
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in the 2018 edition!
= note: for more information, see issue #41686 <https://github.com/rust-lang/rust/issues/41686>
warning: anonymous parameters are deprecated and will be removed in the next edition.
@ -18,7 +18,7 @@ warning: anonymous parameters are deprecated and will be removed in the next edi
LL | fn bar_with_default_impl(String, String) {}
| ^^^^^^ help: Try naming the parameter or explicitly ignoring it: `_: String`
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in the 2018 edition!
= note: for more information, see issue #41686 <https://github.com/rust-lang/rust/issues/41686>
warning: anonymous parameters are deprecated and will be removed in the next edition.
@ -27,6 +27,6 @@ warning: anonymous parameters are deprecated and will be removed in the next edi
LL | fn bar_with_default_impl(String, String) {}
| ^^^^^^ help: Try naming the parameter or explicitly ignoring it: `_: String`
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in the 2018 edition!
= note: for more information, see issue #41686 <https://github.com/rust-lang/rust/issues/41686>

View file

@ -12,9 +12,9 @@
#[rustc_dump_program_clauses] //~ ERROR program clause dump
trait Foo<S, T, U> {
fn s(S) -> S;
fn t(T) -> T;
fn u(U) -> U;
fn s(_: S) -> S;
fn t(_: T) -> T;
fn u(_: U) -> U;
}
fn main() {

View file

@ -13,7 +13,7 @@
#[rustc_dump_program_clauses] //~ ERROR program clause dump
trait Foo<F> where for<'a> F: Fn(&'a (u8, u16)) -> &'a u8
{
fn s(F) -> F;
fn s(_: F) -> F;
}
fn main() {

View file

@ -15,9 +15,9 @@ use std::borrow::Borrow;
#[rustc_dump_program_clauses] //~ ERROR program clause dump
trait Foo<'a, 'b, S, T, U> where S: Debug, T: Borrow<U>, U: ?Sized, 'a: 'b, U: 'b {
fn s(S) -> S;
fn t(T) -> T;
fn u(U) -> U;
fn s(_: S) -> S;
fn t(_: T) -> T;
fn u(_: U) -> U;
}
fn main() {

View file

@ -10,7 +10,7 @@ note: lint level defined here
LL | #![deny(future_incompatible)]
| ^^^^^^^^^^^^^^^^^^^
= note: #[deny(anonymous_parameters)] implied by #[deny(future_incompatible)]
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in the 2018 edition!
= note: for more information, see issue #41686 <https://github.com/rust-lang/rust/issues/41686>
error: aborting due to previous error

View file

@ -125,7 +125,7 @@ trait InTraitDefnReturn {
// Allowed and disallowed in trait impls
trait DummyTrait {
type Out;
fn in_trait_impl_parameter(impl Debug);
fn in_trait_impl_parameter(_: impl Debug);
fn in_trait_impl_return() -> Self::Out;
}
impl DummyTrait for () {