2019-05-02 09:53:12 -05:00
|
|
|
// compile-flags: -Z unstable-options
|
|
|
|
|
|
|
|
#![feature(rustc_private)]
|
2019-06-24 03:43:51 -05:00
|
|
|
#![deny(rustc::lint_pass_impl_without_macro)]
|
2019-05-02 09:53:12 -05:00
|
|
|
|
2020-03-29 11:08:01 -05:00
|
|
|
extern crate rustc_middle;
|
2019-12-01 12:11:31 -06:00
|
|
|
extern crate rustc_session;
|
2019-05-02 09:53:12 -05:00
|
|
|
|
2023-09-28 09:00:38 -05:00
|
|
|
use rustc_session::lint::{LintPass, LintVec};
|
2020-01-08 15:54:08 -06:00
|
|
|
use rustc_session::{declare_lint, declare_lint_pass, impl_lint_pass};
|
2019-05-02 09:53:12 -05:00
|
|
|
|
|
|
|
declare_lint! {
|
|
|
|
pub TEST_LINT,
|
|
|
|
Allow,
|
|
|
|
"test"
|
|
|
|
}
|
|
|
|
|
|
|
|
struct Foo;
|
|
|
|
|
|
|
|
impl LintPass for Foo { //~ERROR implementing `LintPass` by hand
|
|
|
|
fn name(&self) -> &'static str {
|
|
|
|
"Foo"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-06-13 08:49:33 -05:00
|
|
|
macro_rules! custom_lint_pass_macro {
|
|
|
|
() => {
|
|
|
|
struct Custom;
|
|
|
|
|
|
|
|
impl LintPass for Custom { //~ERROR implementing `LintPass` by hand
|
|
|
|
fn name(&self) -> &'static str {
|
|
|
|
"Custom"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
custom_lint_pass_macro!();
|
|
|
|
|
2019-05-02 09:53:12 -05:00
|
|
|
struct Bar;
|
|
|
|
|
|
|
|
impl_lint_pass!(Bar => [TEST_LINT]);
|
|
|
|
|
|
|
|
declare_lint_pass!(Baz => [TEST_LINT]);
|
|
|
|
|
|
|
|
fn main() {}
|