Make sufficiently old or low-impact compatibility lints deny-by-default

This commit is contained in:
Vadim Petrochenkov 2016-09-15 00:51:46 +03:00
parent bc283c9487
commit 2a85211040
9 changed files with 32 additions and 46 deletions

View file

@ -120,25 +120,25 @@
declare_lint! {
pub INACCESSIBLE_EXTERN_CRATE,
Warn,
Deny,
"use of inaccessible extern crate erroneously allowed"
}
declare_lint! {
pub INVALID_TYPE_PARAM_DEFAULT,
Warn,
Deny,
"type parameter default erroneously allowed in invalid location"
}
declare_lint! {
pub ILLEGAL_FLOATING_POINT_CONSTANT_PATTERN,
Warn,
Deny,
"floating-point constants cannot be used in patterns"
}
declare_lint! {
pub ILLEGAL_STRUCT_OR_ENUM_CONSTANT_PATTERN,
Warn,
Deny,
"constants of struct or enum type can only be used in a pattern if \
the struct or enum has `#[derive(PartialEq, Eq)]`"
}
@ -164,7 +164,7 @@
declare_lint! {
pub OVERLAPPING_INHERENT_IMPLS,
Warn,
Deny,
"two overlapping inherent impls define an item with the same name were erroneously allowed"
}
@ -176,13 +176,13 @@
declare_lint! {
pub SUPER_OR_SELF_IN_GLOBAL_PATH,
Warn,
Deny,
"detects super or self keywords at the beginning of global path"
}
declare_lint! {
pub LIFETIME_UNDERSCORE,
Warn,
Deny,
"lifetimes or labels named `'_` were erroneously allowed"
}

View file

@ -76,8 +76,6 @@ fn foo(x: Option<String>) {
match the input to a match expression. So, the following will not compile:
```compile_fail
#![deny(illegal_floating_point_constant_pattern)]
const NAN: f32 = 0.0 / 0.0;
let number = 0.1f32;

View file

@ -174,15 +174,15 @@ macro_rules! add_lint_group {
},
FutureIncompatibleInfo {
id: LintId::of(INACCESSIBLE_EXTERN_CRATE),
reference: "PR 31362 <https://github.com/rust-lang/rust/pull/31362>",
reference: "issue #36886 <https://github.com/rust-lang/rust/issues/36886>",
},
FutureIncompatibleInfo {
id: LintId::of(INVALID_TYPE_PARAM_DEFAULT),
reference: "PR 30724 <https://github.com/rust-lang/rust/pull/30724>",
reference: "issue #36887 <https://github.com/rust-lang/rust/issues/36887>",
},
FutureIncompatibleInfo {
id: LintId::of(SUPER_OR_SELF_IN_GLOBAL_PATH),
reference: "PR #32403 <https://github.com/rust-lang/rust/pull/32403>",
reference: "issue #36888 <https://github.com/rust-lang/rust/issues/36888>",
},
FutureIncompatibleInfo {
id: LintId::of(TRANSMUTE_FROM_FN_ITEM_TYPES),
@ -190,15 +190,15 @@ macro_rules! add_lint_group {
},
FutureIncompatibleInfo {
id: LintId::of(OVERLAPPING_INHERENT_IMPLS),
reference: "issue #22889 <https://github.com/rust-lang/rust/issues/22889>",
reference: "issue #36889 <https://github.com/rust-lang/rust/issues/36889>",
},
FutureIncompatibleInfo {
id: LintId::of(ILLEGAL_FLOATING_POINT_CONSTANT_PATTERN),
reference: "RFC 1445 <https://github.com/rust-lang/rfcs/pull/1445>",
reference: "issue #36890 <https://github.com/rust-lang/rust/issues/36890>",
},
FutureIncompatibleInfo {
id: LintId::of(ILLEGAL_STRUCT_OR_ENUM_CONSTANT_PATTERN),
reference: "RFC 1445 <https://github.com/rust-lang/rfcs/pull/1445>",
reference: "issue #36891 <https://github.com/rust-lang/rust/issues/36891>",
},
FutureIncompatibleInfo {
id: LintId::of(HR_LIFETIME_IN_ASSOC_TYPE),
@ -206,11 +206,11 @@ macro_rules! add_lint_group {
},
FutureIncompatibleInfo {
id: LintId::of(LIFETIME_UNDERSCORE),
reference: "RFC 1177 <https://github.com/rust-lang/rfcs/pull/1177>",
reference: "issue #36892 <https://github.com/rust-lang/rust/issues/36892>",
},
FutureIncompatibleInfo {
id: LintId::of(SAFE_EXTERN_STATICS),
reference: "issue 36247 <https://github.com/rust-lang/rust/issues/35112>",
reference: "issue #36247 <https://github.com/rust-lang/rust/issues/35112>",
},
]);

View file

@ -8,9 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
#![feature(rustc_attrs)]
#![allow(dead_code)]
#![allow(unused_imports)]
#![allow(unused)]
mod foo {
extern crate core;
@ -19,11 +17,11 @@ mod foo {
// Check that private crates can be used from outside their modules, albeit with warnings
use foo::core; //~ WARN extern crate `core` is private
//~^ WARN this was previously accepted by the compiler but is being phased out
use foo::core::cell; //~ WARN extern crate `core` is private
use foo::core::cell; //~ ERROR extern crate `core` is private
//~^ WARN this was previously accepted by the compiler but is being phased out
fn f() {
foo::core::cell::Cell::new(0); //~ WARN extern crate `core` is private
foo::core::cell::Cell::new(0); //~ ERROR extern crate `core` is private
//~^ WARN this was previously accepted by the compiler but is being phased out
use foo::*;
@ -39,5 +37,4 @@ mod baz {
use self::core::cell; // Check that public extern crates are glob imported
}
#[rustc_error]
fn main() {} //~ ERROR compilation successful
fn main() {}

View file

@ -11,13 +11,12 @@
// Test that you cannot define items with the same name in overlapping inherent
// impl blocks.
#![feature(rustc_attrs)]
#![allow(dead_code)]
#![allow(unused)]
struct Foo;
impl Foo {
fn id() {} //~ WARN duplicate definitions
fn id() {} //~ ERROR duplicate definitions
//~^ WARN previously accepted
}
@ -28,7 +27,7 @@ fn id() {}
struct Bar<T>(T);
impl<T> Bar<T> {
fn bar(&self) {} //~ WARN duplicate definitions
fn bar(&self) {} //~ ERROR duplicate definitions
//~^ WARN previously accepted
}
@ -39,7 +38,7 @@ fn bar(&self) {}
struct Baz<T>(T);
impl<T: Copy> Baz<T> {
fn baz(&self) {} //~ WARN duplicate definitions
fn baz(&self) {} //~ ERROR duplicate definitions
//~^ WARN previously accepted
}
@ -47,5 +46,4 @@ impl<T> Baz<Vec<T>> {
fn baz(&self) {}
}
#[rustc_error]
fn main() {} //~ ERROR compilation successful
fn main() {}

View file

@ -8,16 +8,13 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
#![feature(rustc_attrs)]
#![feature(slice_patterns)]
#![allow(dead_code)]
#![deny(illegal_floating_point_constant_pattern)]
// Matching against NaN should result in a warning
#![feature(slice_patterns)]
#![allow(unused)]
use std::f64::NAN;
#[rustc_error]
fn main() {
let x = NAN;
match x {

View file

@ -8,8 +8,6 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
#![deny(lifetime_underscore)]
fn _f<'_>() //~ ERROR invalid lifetime name `'_`
//~^ WARN this was previously accepted
-> &'_ u8 //~ ERROR invalid lifetime name `'_`

View file

@ -8,22 +8,20 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
#![feature(rustc_attrs)]
#![allow(unused_imports, dead_code)]
#![allow(unused)]
struct S;
struct Z;
mod foo {
use ::super::{S, Z}; //~ WARN global paths cannot start with `super`
use ::super::{S, Z}; //~ ERROR global paths cannot start with `super`
//~^ WARN this was previously accepted by the compiler but is being phased out
pub fn g() {
use ::super::main; //~ WARN global paths cannot start with `super`
use ::super::main; //~ ERROR global paths cannot start with `super`
//~^ WARN this was previously accepted by the compiler but is being phased out
main();
}
}
#[rustc_error]
fn main() { foo::g(); } //~ ERROR compilation successful
fn main() { foo::g(); }

View file

@ -23,7 +23,7 @@ macro_rules! m { () => { i32 } }
let x: m!() = m!();
std::cell::Cell::<m!()>::new(m!());
impl<T = m!()> std::ops::Index<m!()> for Trait<(m!(), T)>
impl<T> std::ops::Index<m!()> for Trait<(m!(), T)>
where T: Trait<m!()>
{
type Output = m!();