diff options
| author | Manish Goregaokar <manishsmail@gmail.com> | 2015-03-03 14:13:46 +0530 |
|---|---|---|
| committer | Manish Goregaokar <manishsmail@gmail.com> | 2015-03-03 17:02:24 +0530 |
| commit | 2e15a7d92e622f9f7d90aeab331fe8abb3089ce6 (patch) | |
| tree | 2ffcf3ef047d7ff61e06e7cdcf0f9aba17718bb2 | |
| parent | 394a9c57add8b9e6abcce080f5bee94edb019334 (diff) | |
| parent | daef3b9b53559b4c176b0a02db0f2c4fb8232c20 (diff) | |
| download | rust-2e15a7d92e622f9f7d90aeab331fe8abb3089ce6.tar.gz rust-2e15a7d92e622f9f7d90aeab331fe8abb3089ce6.zip | |
Rollup merge of #22977 - kmcallister:issue-15778, r=sfackler
Fixes #15778. r? @sfackler
| -rw-r--r-- | src/test/auxiliary/lint_for_crate.rs | 43 | ||||
| -rw-r--r-- | src/test/compile-fail-fulldeps/issue-15778-fail.rs | 18 | ||||
| -rw-r--r-- | src/test/run-pass-fulldeps/issue-15778-pass.rs | 19 |
3 files changed, 80 insertions, 0 deletions
diff --git a/src/test/auxiliary/lint_for_crate.rs b/src/test/auxiliary/lint_for_crate.rs new file mode 100644 index 00000000000..1be37ce1780 --- /dev/null +++ b/src/test/auxiliary/lint_for_crate.rs @@ -0,0 +1,43 @@ +// Copyright 2015 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 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// force-host + +#![feature(plugin_registrar)] +#![feature(box_syntax)] + +extern crate syntax; +#[macro_use] extern crate rustc; + +use syntax::{ast, attr}; +use rustc::lint::{Context, LintPass, LintPassObject, LintArray}; +use rustc::plugin::Registry; + +declare_lint!(CRATE_NOT_OKAY, Warn, "crate not marked with #![crate_okay]"); + +struct Pass; + +impl LintPass for Pass { + fn get_lints(&self) -> LintArray { + lint_array!(CRATE_NOT_OKAY) + } + + fn check_crate(&mut self, cx: &Context, krate: &ast::Crate) { + if !attr::contains_name(&krate.attrs, "crate_okay") { + cx.span_lint(CRATE_NOT_OKAY, krate.span, + "crate is not marked with #![crate_okay]"); + } + } +} + +#[plugin_registrar] +pub fn plugin_registrar(reg: &mut Registry) { + reg.register_lint_pass(box Pass as LintPassObject); +} diff --git a/src/test/compile-fail-fulldeps/issue-15778-fail.rs b/src/test/compile-fail-fulldeps/issue-15778-fail.rs new file mode 100644 index 00000000000..8c6889f715f --- /dev/null +++ b/src/test/compile-fail-fulldeps/issue-15778-fail.rs @@ -0,0 +1,18 @@ +// Copyright 2015 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 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// aux-build:lint_for_crate.rs +// ignore-stage1 +// compile-flags: -D crate-not-okay + +#![feature(plugin, custom_attribute)] //~ ERROR crate is not marked with #![crate_okay] +#![plugin(lint_for_crate)] + +pub fn main() { } diff --git a/src/test/run-pass-fulldeps/issue-15778-pass.rs b/src/test/run-pass-fulldeps/issue-15778-pass.rs new file mode 100644 index 00000000000..a767779687a --- /dev/null +++ b/src/test/run-pass-fulldeps/issue-15778-pass.rs @@ -0,0 +1,19 @@ +// Copyright 2015 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 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// aux-build:lint_for_crate.rs +// ignore-stage1 +// compile-flags: -D crate-not-okay + +#![feature(plugin, custom_attribute)] +#![plugin(lint_for_crate)] +#![crate_okay] + +pub fn main() { } |
