47 lines
871 B
Rust
47 lines
871 B
Rust
// compile-flags: -Z unstable-options
|
|
|
|
#![feature(rustc_private)]
|
|
#![deny(rustc::lint_pass_impl_without_macro)]
|
|
|
|
extern crate rustc_middle;
|
|
extern crate rustc_session;
|
|
|
|
use rustc_session::lint::{LintPass, LintVec};
|
|
use rustc_session::{declare_lint, declare_lint_pass, impl_lint_pass};
|
|
|
|
declare_lint! {
|
|
pub TEST_LINT,
|
|
Allow,
|
|
"test"
|
|
}
|
|
|
|
struct Foo;
|
|
|
|
impl LintPass for Foo { //~ERROR implementing `LintPass` by hand
|
|
fn name(&self) -> &'static str {
|
|
"Foo"
|
|
}
|
|
}
|
|
|
|
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!();
|
|
|
|
struct Bar;
|
|
|
|
impl_lint_pass!(Bar => [TEST_LINT]);
|
|
|
|
declare_lint_pass!(Baz => [TEST_LINT]);
|
|
|
|
fn main() {}
|