diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d8089675eadde..41812c89f9e1b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -151,13 +151,7 @@ Therefore you should use `tests/ui/update-all-references.sh` (after running Manually testing against an example file is useful if you have added some `println!`s and test suite output becomes unreadable. To try clippy with your local modifications, run `cargo run --bin clippy-driver -- -L ./target/debug input.rs` from the -working copy root. Your test file, here `input.rs`, needs to have clippy -enabled as a plugin: - -```rust -#![feature(plugin)] -#![plugin(clippy)] -``` +working copy root. ### How Clippy works diff --git a/README.md b/README.md index 3263b74b5a9cc..9472156ec987f 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ SYSROOT=/path/to/rustc/sysroot cargo install clippy ### Running clippy from the command line without installing it -To have cargo compile your crate with clippy without clippy installation and without needing `#![plugin(clippy)]` +To have cargo compile your crate with clippy without clippy installation in your code, you can use: ```terminal diff --git a/src/lib.rs b/src/lib.rs index f8682884a50ee..e69323255e8d6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -14,10 +14,11 @@ extern crate clippy_lints; pub fn plugin_registrar(reg: &mut Registry) { reg.sess.lint_store.with_read_lock(|lint_store| { for (lint, _, _) in lint_store.get_lint_groups() { + reg.sess + .struct_warn("the clippy plugin is being deprecated, please use cargo clippy or rls with the clippy feature") + .emit(); if lint == "clippy" { - reg.sess - .struct_warn("running cargo clippy on a crate that also imports the clippy plugin") - .emit(); + // cargo clippy run on a crate that also uses the plugin return; } } diff --git a/tests/conf_whitelisted.rs b/tests/conf_whitelisted.rs deleted file mode 100644 index 10a7d3e72d7d5..0000000000000 --- a/tests/conf_whitelisted.rs +++ /dev/null @@ -1,2 +0,0 @@ -#![feature(plugin)] -#![plugin(clippy(conf_file = "./auxiliary/conf_whitelisted.toml"))] diff --git a/tests/cc_seme.rs b/tests/run-pass/cc_seme.rs similarity index 89% rename from tests/cc_seme.rs rename to tests/run-pass/cc_seme.rs index c81b32c54bced..1539d3c61bc42 100644 --- a/tests/cc_seme.rs +++ b/tests/run-pass/cc_seme.rs @@ -1,6 +1,3 @@ -#![feature(plugin)] -#![plugin(clippy)] - #[allow(dead_code)] enum Baz { One, @@ -12,7 +9,9 @@ struct Test { b: Baz, } -fn main() { +fn main() { } + +pub fn foo() { use Baz::*; let x = Test { t: Some(0), b: One }; diff --git a/tests/ice_exacte_size.rs b/tests/run-pass/ice_exacte_size.rs similarity index 85% rename from tests/ice_exacte_size.rs rename to tests/run-pass/ice_exacte_size.rs index eeab3a2bec593..914153c64fff9 100644 --- a/tests/ice_exacte_size.rs +++ b/tests/run-pass/ice_exacte_size.rs @@ -1,5 +1,3 @@ -#![feature(plugin)] -#![plugin(clippy)] #![deny(clippy)] #[allow(dead_code)] @@ -15,3 +13,5 @@ impl Iterator for Foo { } impl ExactSizeIterator for Foo {} + +fn main() {} diff --git a/tests/issue-825.rs b/tests/run-pass/issue-825.rs similarity index 92% rename from tests/issue-825.rs rename to tests/run-pass/issue-825.rs index f806c2c6fde24..79df259eadbd5 100644 --- a/tests/issue-825.rs +++ b/tests/run-pass/issue-825.rs @@ -1,5 +1,3 @@ -#![feature(plugin)] -#![plugin(clippy)] #![allow(warnings)] // this should compile in a reasonable amount of time diff --git a/tests/mut_mut_macro.rs b/tests/run-pass/mut_mut_macro.rs similarity index 85% rename from tests/mut_mut_macro.rs rename to tests/run-pass/mut_mut_macro.rs index a6473b0f909e1..2b916c025d315 100644 --- a/tests/mut_mut_macro.rs +++ b/tests/run-pass/mut_mut_macro.rs @@ -1,12 +1,11 @@ -#![feature(plugin)] -#![plugin(clippy)] #![deny(mut_mut, zero_ptr, cmp_nan)] #![allow(dead_code)] -#[macro_use] -extern crate lazy_static; +// compiletest + extern crates doesn't work together +//#[macro_use] +//extern crate lazy_static; -use std::collections::HashMap; +//use std::collections::HashMap; // ensure that we don't suggest `is_nan` and `is_null` inside constants // FIXME: once const fn is stable, suggest these functions again in constants @@ -17,6 +16,7 @@ static mut BUH: bool = 42.0 < std::f32::NAN; #[allow(unused_variables, unused_mut)] fn main() { + /* lazy_static! { static ref MUT_MAP : HashMap = { let mut m = HashMap::new(); @@ -26,6 +26,7 @@ fn main() { static ref MUT_COUNT : usize = MUT_MAP.len(); } assert_eq!(*MUT_COUNT, 1); + */ // FIXME: don't lint in array length, requires `check_body` //let _ = [""; (42.0 < std::f32::NAN) as usize]; } diff --git a/tests/used_underscore_binding_macro.rs b/tests/run-pass/used_underscore_binding_macro.rs similarity index 89% rename from tests/used_underscore_binding_macro.rs rename to tests/run-pass/used_underscore_binding_macro.rs index b323cb5d25b49..c9c77257c0ecf 100644 --- a/tests/used_underscore_binding_macro.rs +++ b/tests/run-pass/used_underscore_binding_macro.rs @@ -1,5 +1,5 @@ -#![feature(plugin)] -#![plugin(clippy)] + + #[macro_use] extern crate serde_derive; @@ -16,3 +16,5 @@ struct MacroAttributesTest { fn macro_attributes_test() { let _ = MacroAttributesTest { _foo: 0 }; } + +fn main() {} diff --git a/tests/auxiliary/conf_whitelisted.toml b/tests/run-pass/whitelist/clippy.toml similarity index 100% rename from tests/auxiliary/conf_whitelisted.toml rename to tests/run-pass/whitelist/clippy.toml diff --git a/tests/run-pass/whitelist/conf_whitelisted.rs b/tests/run-pass/whitelist/conf_whitelisted.rs new file mode 100644 index 0000000000000..f328e4d9d04c3 --- /dev/null +++ b/tests/run-pass/whitelist/conf_whitelisted.rs @@ -0,0 +1 @@ +fn main() {} diff --git a/tests/ui/conf_bad_toml.toml b/tests/ui/bad_toml/clippy.toml similarity index 100% rename from tests/ui/conf_bad_toml.toml rename to tests/ui/bad_toml/clippy.toml diff --git a/tests/ui/conf_bad_toml.rs b/tests/ui/bad_toml/conf_bad_toml.rs similarity index 57% rename from tests/ui/conf_bad_toml.rs rename to tests/ui/bad_toml/conf_bad_toml.rs index a2ce7ecc519b3..325688ac7daa9 100644 --- a/tests/ui/conf_bad_toml.rs +++ b/tests/ui/bad_toml/conf_bad_toml.rs @@ -1,6 +1,6 @@ // error-pattern: error reading Clippy's configuration file -#![plugin(clippy(conf_file="../ui/conf_bad_toml.toml"))] + fn main() {} diff --git a/tests/ui/bad_toml/conf_bad_toml.stderr b/tests/ui/bad_toml/conf_bad_toml.stderr new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/tests/ui/conf_bad_type.toml b/tests/ui/bad_toml_type/clippy.toml similarity index 100% rename from tests/ui/conf_bad_type.toml rename to tests/ui/bad_toml_type/clippy.toml diff --git a/tests/ui/conf_bad_type.rs b/tests/ui/bad_toml_type/conf_bad_type.rs similarity index 72% rename from tests/ui/conf_bad_type.rs rename to tests/ui/bad_toml_type/conf_bad_type.rs index cb18bfb8c90c8..f97f5802b1330 100644 --- a/tests/ui/conf_bad_type.rs +++ b/tests/ui/bad_toml_type/conf_bad_type.rs @@ -1,6 +1,6 @@ // error-pattern: error reading Clippy's configuration file: `blacklisted-names` is expected to be a `Vec < String >` but is a `integer` -#![plugin(clippy(conf_file="../ui/conf_bad_type.toml"))] + fn main() {} diff --git a/tests/ui/bad_toml_type/conf_bad_type.stderr b/tests/ui/bad_toml_type/conf_bad_type.stderr new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/tests/ui/conf_bad_arg.rs b/tests/ui/conf_bad_arg.rs deleted file mode 100644 index b988fdb13853b..0000000000000 --- a/tests/ui/conf_bad_arg.rs +++ /dev/null @@ -1,6 +0,0 @@ -// error-pattern: `conf_file` must be a named value - - -#![plugin(clippy(conf_file))] - -fn main() {} diff --git a/tests/ui/conf_bad_arg.stderr b/tests/ui/conf_bad_arg.stderr deleted file mode 100644 index 094b7d49cb553..0000000000000 --- a/tests/ui/conf_bad_arg.stderr +++ /dev/null @@ -1,11 +0,0 @@ -error[E0658]: compiler plugins are experimental and possibly buggy (see issue #29597) - --> $DIR/conf_bad_arg.rs:4:1 - | -4 | #![plugin(clippy(conf_file))] - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = help: add #![feature(plugin)] to the crate attributes to enable - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0658`. diff --git a/tests/ui/conf_bad_toml.stderr b/tests/ui/conf_bad_toml.stderr deleted file mode 100644 index 640b1c5e6101b..0000000000000 --- a/tests/ui/conf_bad_toml.stderr +++ /dev/null @@ -1,11 +0,0 @@ -error[E0658]: compiler plugins are experimental and possibly buggy (see issue #29597) - --> $DIR/conf_bad_toml.rs:4:1 - | -4 | #![plugin(clippy(conf_file="../ui/conf_bad_toml.toml"))] - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = help: add #![feature(plugin)] to the crate attributes to enable - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0658`. diff --git a/tests/ui/conf_bad_type.stderr b/tests/ui/conf_bad_type.stderr deleted file mode 100644 index f92b52ec03248..0000000000000 --- a/tests/ui/conf_bad_type.stderr +++ /dev/null @@ -1,11 +0,0 @@ -error[E0658]: compiler plugins are experimental and possibly buggy (see issue #29597) - --> $DIR/conf_bad_type.rs:4:1 - | -4 | #![plugin(clippy(conf_file="../ui/conf_bad_type.toml"))] - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = help: add #![feature(plugin)] to the crate attributes to enable - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0658`. diff --git a/tests/ui/conf_french_blacklisted_name.stderr b/tests/ui/conf_french_blacklisted_name.stderr deleted file mode 100644 index 214226ac2f964..0000000000000 --- a/tests/ui/conf_french_blacklisted_name.stderr +++ /dev/null @@ -1,11 +0,0 @@ -error[E0658]: compiler plugins are experimental and possibly buggy (see issue #29597) - --> $DIR/conf_french_blacklisted_name.rs:2:1 - | -2 | #![plugin(clippy(conf_file="../auxiliary/conf_french_blacklisted_name.toml"))] - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = help: add #![feature(plugin)] to the crate attributes to enable - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0658`. diff --git a/tests/ui/conf_path_non_string.rs b/tests/ui/conf_path_non_string.rs deleted file mode 100644 index 8d1f01358fc8f..0000000000000 --- a/tests/ui/conf_path_non_string.rs +++ /dev/null @@ -1,5 +0,0 @@ -#![feature(attr_literals)] - -#![plugin(clippy(conf_file=42))] - -fn main() {} diff --git a/tests/ui/conf_path_non_string.stderr b/tests/ui/conf_path_non_string.stderr deleted file mode 100644 index 10b007b0de0f4..0000000000000 --- a/tests/ui/conf_path_non_string.stderr +++ /dev/null @@ -1,11 +0,0 @@ -error[E0658]: compiler plugins are experimental and possibly buggy (see issue #29597) - --> $DIR/conf_path_non_string.rs:3:1 - | -3 | #![plugin(clippy(conf_file=42))] - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = help: add #![feature(plugin)] to the crate attributes to enable - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0658`. diff --git a/tests/ui/conf_unknown_key.stderr b/tests/ui/conf_unknown_key.stderr deleted file mode 100644 index d7ac055c5174c..0000000000000 --- a/tests/ui/conf_unknown_key.stderr +++ /dev/null @@ -1,11 +0,0 @@ -error[E0658]: compiler plugins are experimental and possibly buggy (see issue #29597) - --> $DIR/conf_unknown_key.rs:4:1 - | -4 | #![plugin(clippy(conf_file="../auxiliary/conf_unknown_key.toml"))] - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = help: add #![feature(plugin)] to the crate attributes to enable - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0658`. diff --git a/tests/ui/cyclomatic_complexity.rs b/tests/ui/cyclomatic_complexity.rs index 0f5726e1ad739..1afae69c1860f 100644 --- a/tests/ui/cyclomatic_complexity.rs +++ b/tests/ui/cyclomatic_complexity.rs @@ -1,4 +1,4 @@ -#![feature(plugin, custom_attribute)] +#![feature(custom_attribute)] #![allow(clippy)] #![warn(cyclomatic_complexity)] diff --git a/tests/ui/cyclomatic_complexity_attr_used.rs b/tests/ui/cyclomatic_complexity_attr_used.rs index 5284d60a5245f..f3895c7e3abdf 100644 --- a/tests/ui/cyclomatic_complexity_attr_used.rs +++ b/tests/ui/cyclomatic_complexity_attr_used.rs @@ -1,4 +1,4 @@ -#![feature(plugin, custom_attribute)] +#![feature(custom_attribute)] #![warn(cyclomatic_complexity)] #![warn(unused)] diff --git a/tests/ui/diverging_sub_expression.rs b/tests/ui/diverging_sub_expression.rs index d2aea93a77d8e..b89a2f1bcaffa 100644 --- a/tests/ui/diverging_sub_expression.rs +++ b/tests/ui/diverging_sub_expression.rs @@ -1,4 +1,4 @@ -#![feature(plugin, never_type)] +#![feature(never_type)] #![warn(diverging_sub_expression)] #![allow(match_same_arms, logic_bug)] diff --git a/tests/ui/dlist.rs b/tests/ui/dlist.rs index 59f0d3fe39b55..a4fab5735e210 100644 --- a/tests/ui/dlist.rs +++ b/tests/ui/dlist.rs @@ -1,4 +1,4 @@ -#![feature(plugin, alloc)] +#![feature(alloc)] #![feature(associated_type_defaults)] diff --git a/tests/ui/enum_variants.rs b/tests/ui/enum_variants.rs index 3be01427134b9..222c76c25b763 100644 --- a/tests/ui/enum_variants.rs +++ b/tests/ui/enum_variants.rs @@ -1,4 +1,4 @@ -#![feature(plugin, non_ascii_idents)] +#![feature(non_ascii_idents)] #![warn(clippy, pub_enum_variant_names)] diff --git a/tests/ui/escape_analysis.rs b/tests/ui/escape_analysis.rs index b99534d05e170..7a888f0191411 100644 --- a/tests/ui/escape_analysis.rs +++ b/tests/ui/escape_analysis.rs @@ -1,4 +1,4 @@ -#![feature(plugin, box_syntax)] +#![feature(box_syntax)] #![allow(warnings, clippy)] diff --git a/tests/ui/excessive_precision.rs b/tests/ui/excessive_precision.rs index 47e73aa0bcd35..25b6555715fd6 100644 --- a/tests/ui/excessive_precision.rs +++ b/tests/ui/excessive_precision.rs @@ -1,4 +1,4 @@ -#![feature(plugin, custom_attribute)] +#![feature(custom_attribute)] #![warn(excessive_precision)] #![allow(print_literal)] diff --git a/tests/ui/for_loop.rs b/tests/ui/for_loop.rs index 0a8be4d938b1a..1f879c5843e34 100644 --- a/tests/ui/for_loop.rs +++ b/tests/ui/for_loop.rs @@ -1,4 +1,4 @@ -#![feature(plugin, custom_attribute)] +#![feature(custom_attribute)] use std::collections::*; diff --git a/tests/ui/mut_mut.rs b/tests/ui/mut_mut.rs index 54176cd6d5533..658ae18466f71 100644 --- a/tests/ui/mut_mut.rs +++ b/tests/ui/mut_mut.rs @@ -4,8 +4,8 @@ #![allow(unused, no_effect, unnecessary_operation)] #![warn(mut_mut)] -//#![plugin(regex_macros)] -//extern crate regex; + + fn fun(x : &mut &mut u32) -> bool { **x > 0 diff --git a/tests/ui/new_without_default.rs b/tests/ui/new_without_default.rs index e618bf1c231ae..c06c9f9e96220 100644 --- a/tests/ui/new_without_default.rs +++ b/tests/ui/new_without_default.rs @@ -1,4 +1,4 @@ -#![feature(plugin, const_fn)] +#![feature(const_fn)] #![allow(dead_code)] diff --git a/tests/ui/no_effect.rs b/tests/ui/no_effect.rs index d1e4bf2a2c743..54028cd8b2b69 100644 --- a/tests/ui/no_effect.rs +++ b/tests/ui/no_effect.rs @@ -1,4 +1,4 @@ -#![feature(plugin, box_syntax)] +#![feature(box_syntax)] #![warn(no_effect, unnecessary_operation)] diff --git a/tests/auxiliary/conf_french_blacklisted_name.toml b/tests/ui/toml_blacklist/clippy.toml similarity index 100% rename from tests/auxiliary/conf_french_blacklisted_name.toml rename to tests/ui/toml_blacklist/clippy.toml diff --git a/tests/ui/conf_french_blacklisted_name.rs b/tests/ui/toml_blacklist/conf_french_blacklisted_name.rs similarity index 81% rename from tests/ui/conf_french_blacklisted_name.rs rename to tests/ui/toml_blacklist/conf_french_blacklisted_name.rs index dbe6d85e5d28d..1f1a8ee91a182 100644 --- a/tests/ui/conf_french_blacklisted_name.rs +++ b/tests/ui/toml_blacklist/conf_french_blacklisted_name.rs @@ -1,5 +1,5 @@ -#![plugin(clippy(conf_file="../auxiliary/conf_french_blacklisted_name.toml"))] + #![allow(dead_code)] #![allow(single_match)] diff --git a/tests/ui/toml_blacklist/conf_french_blacklisted_name.stderr b/tests/ui/toml_blacklist/conf_french_blacklisted_name.stderr new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/tests/auxiliary/conf_unknown_key.toml b/tests/ui/toml_unknown_key/clippy.toml similarity index 100% rename from tests/auxiliary/conf_unknown_key.toml rename to tests/ui/toml_unknown_key/clippy.toml diff --git a/tests/ui/conf_unknown_key.rs b/tests/ui/toml_unknown_key/conf_unknown_key.rs similarity index 59% rename from tests/ui/conf_unknown_key.rs rename to tests/ui/toml_unknown_key/conf_unknown_key.rs index 437d0f9d8b0ac..bfa804558bbd0 100644 --- a/tests/ui/conf_unknown_key.rs +++ b/tests/ui/toml_unknown_key/conf_unknown_key.rs @@ -1,6 +1,6 @@ // error-pattern: error reading Clippy's configuration file: unknown key `foobar` -#![plugin(clippy(conf_file="../auxiliary/conf_unknown_key.toml"))] + fn main() {} diff --git a/tests/ui/toml_unknown_key/conf_unknown_key.stderr b/tests/ui/toml_unknown_key/conf_unknown_key.stderr new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/tests/ui/trailing_zeros.rs b/tests/ui/trailing_zeros.rs index 6a7b6b05e7013..d915a0bed0903 100644 --- a/tests/ui/trailing_zeros.rs +++ b/tests/ui/trailing_zeros.rs @@ -1,4 +1,4 @@ -#![feature(plugin, custom_attribute, stmt_expr_attributes)] +#![feature(custom_attribute, stmt_expr_attributes)] #![allow(unused_parens)]