2019-05-02 14:53:12 +00:00
|
|
|
//@ compile-flags: -Z unstable-options
|
|
|
|
|
|
|
|
#![feature(rustc_private)]
|
2019-06-24 08:43:51 +00:00
|
|
|
#![deny(rustc::lint_pass_impl_without_macro)]
|
2019-05-02 14:53:12 +00:00
|
|
|
|
2020-03-29 16:08:01 +00:00
|
|
|
extern crate rustc_middle;
|
2019-12-01 18:11:31 +00:00
|
|
|
extern crate rustc_session;
|
2019-05-02 14:53:12 +00:00
|
|
|
|
2023-09-28 14:00:38 +00:00
|
|
|
use rustc_session::lint::{LintPass, LintVec};
|
2020-01-08 21:54:08 +00:00
|
|
|
use rustc_session::{declare_lint, declare_lint_pass, impl_lint_pass};
|
2019-05-02 14:53:12 +00: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 13:49:33 +00: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 14:53:12 +00:00
|
|
|
struct Bar;
|
|
|
|
|
|
|
|
impl_lint_pass!(Bar => [TEST_LINT]);
|
|
|
|
|
|
|
|
declare_lint_pass!(Baz => [TEST_LINT]);
|
|
|
|
|
|
|
|
fn main() {}
|