#![crate_name="tag_safe"]
#![crate_type="dylib"]
#![feature(plugin_registrar, rustc_private)]
#[macro_use]
extern crate log;
#[macro_use]
extern crate lazy_static;
extern crate syntax;
extern crate syntax_expand;
#[macro_use]
extern crate rustc;
extern crate rustc_driver;
mod prescan;
mod check;
mod database;
#[plugin_registrar]
pub fn plugin_registrar(reg: &mut ::rustc_driver::plugin::Registry) {
use syntax::feature_gate::AttributeType;
use syntax_expand::base::{SyntaxExtension,SyntaxExtensionKind};
use syntax::source_map::edition::Edition;
use syntax::symbol::Symbol;
reg.register_syntax_extension(Symbol::intern("tagged_safe"), {
let v = SyntaxExtension::default(SyntaxExtensionKind::LegacyAttr( Box::new(prescan::HandlerTaggedSafe) ), Edition::Edition2015);
v
});
let pass = Box::new(check::Pass::new());
reg.register_attribute(pass.sym_issafe .clone(), AttributeType::Whitelisted);
reg.register_attribute(pass.sym_notsafe.clone(), AttributeType::Whitelisted);
reg.register_attribute(pass.sym_reqsafe.clone(), AttributeType::Whitelisted);
reg.register_late_lint_pass(pass);
}