]>
Commit | Line | Data |
---|---|---|
c295e0f8 | 1 | #![feature(rustc_private)] |
b7449926 | 2 | |
74b04a01 | 3 | extern crate rustc_ast; |
b7449926 XL |
4 | |
5 | // Load rustc as a plugin to get macros | |
416331ca | 6 | extern crate rustc_driver; |
74b04a01 XL |
7 | #[macro_use] |
8 | extern crate rustc_lint; | |
9 | #[macro_use] | |
10 | extern crate rustc_session; | |
b7449926 | 11 | |
e1599b0c | 12 | use rustc_driver::plugin::Registry; |
74b04a01 | 13 | use rustc_lint::{EarlyContext, EarlyLintPass, LintArray, LintContext, LintId, LintPass}; |
3dfed10e | 14 | use rustc_ast as ast; |
b7449926 | 15 | declare_tool_lint!(pub clippy::TEST_LINT, Warn, "Warn about stuff"); |
532ac7d7 XL |
16 | declare_tool_lint!( |
17 | /// Some docs | |
18 | pub clippy::TEST_GROUP, | |
19 | Warn, "Warn about other stuff" | |
20 | ); | |
b7449926 | 21 | |
416331ca XL |
22 | declare_tool_lint!( |
23 | /// Some docs | |
24 | pub rustc::TEST_RUSTC_TOOL_LINT, | |
25 | Deny, | |
26 | "Deny internal stuff" | |
27 | ); | |
28 | ||
29 | declare_lint_pass!(Pass => [TEST_LINT, TEST_GROUP, TEST_RUSTC_TOOL_LINT]); | |
b7449926 XL |
30 | |
31 | impl EarlyLintPass for Pass { | |
32 | fn check_item(&mut self, cx: &EarlyContext, it: &ast::Item) { | |
48663c56 | 33 | if it.ident.name.as_str() == "lintme" { |
74b04a01 | 34 | cx.lint(TEST_LINT, |lint| { |
5e7ed085 | 35 | lint.build("item is named 'lintme'").set_span(it.span).emit(); |
74b04a01 | 36 | }); |
b7449926 | 37 | } |
48663c56 | 38 | if it.ident.name.as_str() == "lintmetoo" { |
74b04a01 | 39 | cx.lint(TEST_GROUP, |lint| { |
5e7ed085 | 40 | lint.build("item is named 'lintmetoo'").set_span(it.span).emit(); |
74b04a01 | 41 | }); |
b7449926 XL |
42 | } |
43 | } | |
44 | } | |
45 | ||
94222f64 XL |
46 | #[no_mangle] |
47 | fn __rustc_plugin_registrar(reg: &mut Registry) { | |
e74abb32 | 48 | reg.lint_store.register_lints(&[&TEST_RUSTC_TOOL_LINT, &TEST_LINT, &TEST_GROUP]); |
c295e0f8 | 49 | reg.lint_store.register_early_pass(|| Box::new(Pass)); |
74b04a01 XL |
50 | reg.lint_store.register_group( |
51 | true, | |
52 | "clippy::group", | |
53 | Some("clippy_group"), | |
54 | vec![LintId::of(&TEST_LINT), LintId::of(&TEST_GROUP)], | |
55 | ); | |
b7449926 | 56 | } |