Skip to content

Commit d4ff949

Browse files
committed
Add a test for the declare_tool_lint macro
1 parent 57c7742 commit d4ff949

File tree

3 files changed

+80
-0
lines changed

3 files changed

+80
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
#![feature(plugin_registrar)]
12+
#![feature(box_syntax, rustc_private)]
13+
#![feature(macro_vis_matcher)]
14+
#![feature(macro_at_most_once_rep)]
15+
16+
extern crate syntax;
17+
18+
// Load rustc as a plugin to get macros
19+
#[macro_use]
20+
extern crate rustc;
21+
extern crate rustc_plugin;
22+
23+
use rustc::lint::{EarlyContext, LintContext, LintPass, EarlyLintPass,
24+
LintArray};
25+
use rustc_plugin::Registry;
26+
use syntax::ast;
27+
declare_tool_lint!(pub clippy::TEST_LINT, Warn, "Warn about stuff");
28+
29+
struct Pass;
30+
31+
impl LintPass for Pass {
32+
fn get_lints(&self) -> LintArray {
33+
lint_array!(TEST_LINT)
34+
}
35+
}
36+
37+
impl EarlyLintPass for Pass {
38+
fn check_item(&mut self, cx: &EarlyContext, it: &ast::Item) {
39+
if it.ident.name == "lintme" {
40+
cx.span_lint(TEST_LINT, it.span, "item is named 'lintme'");
41+
}
42+
}
43+
}
44+
45+
#[plugin_registrar]
46+
pub fn plugin_registrar(reg: &mut Registry) {
47+
reg.register_early_lint_pass(box Pass);
48+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
// run-pass
12+
// aux-build:lint_tool_test.rs
13+
// ignore-stage1
14+
#![feature(plugin)]
15+
#![feature(tool_lints)]
16+
#![plugin(lint_tool_test)]
17+
#![allow(dead_code)]
18+
19+
fn lintme() { } //~ WARNING item is named 'lintme'
20+
21+
#[allow(clippy::test_lint)]
22+
pub fn main() {
23+
fn lintme() { }
24+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
warning: item is named 'lintme'
2+
--> $DIR/lint_tool_test.rs:19:1
3+
|
4+
LL | fn lintme() { } //~ WARNING item is named 'lintme'
5+
| ^^^^^^^^^^^^^^^
6+
|
7+
= note: #[warn(clippy::test_lint)] on by default
8+

0 commit comments

Comments
 (0)