From d4ff949953141877743ee95123a492c4e48c3809 Mon Sep 17 00:00:00 2001 From: flip1995 <9744647+flip1995@users.noreply.github.com> Date: Mon, 30 Jul 2018 11:30:07 +0200 Subject: [PATCH] Add a test for the declare_tool_lint macro --- .../ui-fulldeps/auxiliary/lint_tool_test.rs | 48 +++++++++++++++++++ src/test/ui-fulldeps/lint_tool_test.rs | 24 ++++++++++ src/test/ui-fulldeps/lint_tool_test.stderr | 8 ++++ 3 files changed, 80 insertions(+) create mode 100644 src/test/ui-fulldeps/auxiliary/lint_tool_test.rs create mode 100644 src/test/ui-fulldeps/lint_tool_test.rs create mode 100644 src/test/ui-fulldeps/lint_tool_test.stderr diff --git a/src/test/ui-fulldeps/auxiliary/lint_tool_test.rs b/src/test/ui-fulldeps/auxiliary/lint_tool_test.rs new file mode 100644 index 00000000000..01fa2f3459e --- /dev/null +++ b/src/test/ui-fulldeps/auxiliary/lint_tool_test.rs @@ -0,0 +1,48 @@ +// Copyright 2018 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![feature(plugin_registrar)] +#![feature(box_syntax, rustc_private)] +#![feature(macro_vis_matcher)] +#![feature(macro_at_most_once_rep)] + +extern crate syntax; + +// Load rustc as a plugin to get macros +#[macro_use] +extern crate rustc; +extern crate rustc_plugin; + +use rustc::lint::{EarlyContext, LintContext, LintPass, EarlyLintPass, + LintArray}; +use rustc_plugin::Registry; +use syntax::ast; +declare_tool_lint!(pub clippy::TEST_LINT, Warn, "Warn about stuff"); + +struct Pass; + +impl LintPass for Pass { + fn get_lints(&self) -> LintArray { + lint_array!(TEST_LINT) + } +} + +impl EarlyLintPass for Pass { + fn check_item(&mut self, cx: &EarlyContext, it: &ast::Item) { + if it.ident.name == "lintme" { + cx.span_lint(TEST_LINT, it.span, "item is named 'lintme'"); + } + } +} + +#[plugin_registrar] +pub fn plugin_registrar(reg: &mut Registry) { + reg.register_early_lint_pass(box Pass); +} diff --git a/src/test/ui-fulldeps/lint_tool_test.rs b/src/test/ui-fulldeps/lint_tool_test.rs new file mode 100644 index 00000000000..ccdcd2df31b --- /dev/null +++ b/src/test/ui-fulldeps/lint_tool_test.rs @@ -0,0 +1,24 @@ +// Copyright 2018 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// run-pass +// aux-build:lint_tool_test.rs +// ignore-stage1 +#![feature(plugin)] +#![feature(tool_lints)] +#![plugin(lint_tool_test)] +#![allow(dead_code)] + +fn lintme() { } //~ WARNING item is named 'lintme' + +#[allow(clippy::test_lint)] +pub fn main() { + fn lintme() { } +} diff --git a/src/test/ui-fulldeps/lint_tool_test.stderr b/src/test/ui-fulldeps/lint_tool_test.stderr new file mode 100644 index 00000000000..22d0f458e7d --- /dev/null +++ b/src/test/ui-fulldeps/lint_tool_test.stderr @@ -0,0 +1,8 @@ +warning: item is named 'lintme' + --> $DIR/lint_tool_test.rs:19:1 + | +LL | fn lintme() { } //~ WARNING item is named 'lintme' + | ^^^^^^^^^^^^^^^ + | + = note: #[warn(clippy::test_lint)] on by default + -- 2.44.0