| #![feature(rustc_private)] |
| #![deny(clippy::invalid_clippy_version_attribute, clippy::missing_clippy_version_attribute)] |
| |
| #[macro_use] |
| extern crate rustc_middle; |
| #[macro_use] |
| extern crate rustc_session; |
| extern crate rustc_lint; |
| |
| /////////////////////// |
| // Valid descriptions |
| /////////////////////// |
| declare_tool_lint! { |
| #[clippy::version = "pre 1.29.0"] |
| pub clippy::VALID_ONE, |
| Warn, |
| "One", |
| report_in_external_macro: true |
| } |
| |
| declare_tool_lint! { |
| #[clippy::version = "1.29.0"] |
| pub clippy::VALID_TWO, |
| Warn, |
| "Two", |
| report_in_external_macro: true |
| } |
| |
| declare_tool_lint! { |
| #[clippy::version = "1.59.0"] |
| pub clippy::VALID_THREE, |
| Warn, |
| "Three", |
| report_in_external_macro: true |
| } |
| |
| /////////////////////// |
| // Invalid attributes |
| /////////////////////// |
| declare_tool_lint! { |
| //~^ invalid_clippy_version_attribute |
| #[clippy::version = "1.2.3.4.5.6"] |
| pub clippy::INVALID_ONE, |
| Warn, |
| "One", |
| report_in_external_macro: true |
| } |
| |
| declare_tool_lint! { |
| //~^ invalid_clippy_version_attribute |
| #[clippy::version = "I'm a string"] |
| pub clippy::INVALID_TWO, |
| Warn, |
| "Two", |
| report_in_external_macro: true |
| } |
| |
| /////////////////////// |
| // Missing attribute test |
| /////////////////////// |
| declare_tool_lint! { |
| //~^ missing_clippy_version_attribute |
| #[clippy::version] |
| pub clippy::MISSING_ATTRIBUTE_ONE, |
| Warn, |
| "Two", |
| report_in_external_macro: true |
| } |
| |
| declare_tool_lint! { |
| //~^ missing_clippy_version_attribute |
| pub clippy::MISSING_ATTRIBUTE_TWO, |
| Warn, |
| "Two", |
| report_in_external_macro: true |
| } |
| |
| #[allow(clippy::missing_clippy_version_attribute)] |
| mod internal_clippy_lints { |
| declare_tool_lint! { |
| pub clippy::ALLOW_MISSING_ATTRIBUTE_ONE, |
| Warn, |
| "Two", |
| report_in_external_macro: true |
| } |
| } |
| |
| use crate::internal_clippy_lints::ALLOW_MISSING_ATTRIBUTE_ONE; |
| declare_lint_pass!(Pass2 => [ |
| VALID_ONE, |
| VALID_TWO, |
| VALID_THREE, |
| INVALID_ONE, |
| INVALID_TWO, |
| MISSING_ATTRIBUTE_ONE, |
| MISSING_ATTRIBUTE_TWO, |
| ALLOW_MISSING_ATTRIBUTE_ONE, |
| ]); |
| |
| fn main() {} |