use rustc::hir;
use rustc::lint::*;
+use rustc::{declare_lint, lint_array};
use syntax::ast;
use syntax::codemap::Span;
return;
}
match it.node {
- hir::ItemFn(..) => {
+ hir::ItemKind::Fn(..) => {
let desc = "a function";
check_missing_inline_attrs(cx, &it.attrs, it.span, desc);
},
- hir::ItemTrait(ref _is_auto, ref _unsafe, ref _generics,
+ hir::ItemKind::Trait(ref _is_auto, ref _unsafe, ref _generics,
ref _bounds, ref trait_items) => {
// note: we need to check if the trait is exported so we can't use
// `LateLintPass::check_trait_item` here.
}
}
}
- hir::ItemConst(..) |
- hir::ItemEnum(..) |
- hir::ItemMod(..) |
- hir::ItemStatic(..) |
- hir::ItemStruct(..) |
- hir::ItemTraitAlias(..) |
- hir::ItemGlobalAsm(..) |
- hir::ItemTy(..) |
- hir::ItemUnion(..) |
- hir::ItemExistential(..) |
- hir::ItemExternCrate(..) |
- hir::ItemForeignMod(..) |
- hir::ItemImpl(..) |
- hir::ItemUse(..) => {},
+ hir::ItemKind::Const(..) |
+ hir::ItemKind::Enum(..) |
+ hir::ItemKind::Mod(..) |
+ hir::ItemKind::Static(..) |
+ hir::ItemKind::Struct(..) |
+ hir::ItemKind::TraitAlias(..) |
+ hir::ItemKind::GlobalAsm(..) |
+ hir::ItemKind::Ty(..) |
+ hir::ItemKind::Union(..) |
+ hir::ItemKind::Existential(..) |
+ hir::ItemKind::ExternCrate(..) |
+ hir::ItemKind::ForeignMod(..) |
+ hir::ItemKind::Impl(..) |
+ hir::ItemKind::Use(..) => {},
};
}
let desc = match impl_item.node {
hir::ImplItemKind::Method(..) => "a method",
hir::ImplItemKind::Const(..) |
- hir::ImplItemKind::Type(_) => return,
+ hir::ImplItemKind::Type(_) |
+ hir::ImplItemKind::Existential(_) => return,
};
let def_id = cx.tcx.hir.local_def_id(impl_item.id);
- match cx.tcx.associated_item(def_id).container {
- TraitContainer(cid) => {
- if let Some(n) = cx.tcx.hir.as_local_node_id(cid) {
- if !cx.access_levels.is_exported(n) {
- // If a trait is being implemented for an item, and the
- // trait is not exported, we don't need #[inline]
- return;
- }
- }
- },
- ImplContainer(cid) => {
- if cx.tcx.impl_trait_ref(cid).is_some() {
- let trait_ref = cx.tcx.impl_trait_ref(cid).unwrap();
- if let Some(n) = cx.tcx.hir.as_local_node_id(trait_ref.def_id) {
- if !cx.access_levels.is_exported(n) {
- // If a trait is being implemented for an item, and the
- // trait is not exported, we don't need #[inline]
- return;
- }
- }
+ let trait_def_id = match cx.tcx.associated_item(def_id).container {
+ TraitContainer(cid) => Some(cid),
+ ImplContainer(cid) => cx.tcx.impl_trait_ref(cid).map(|t| t.def_id),
+ };
+
+ if let Some(trait_def_id) = trait_def_id {
+ if let Some(n) = cx.tcx.hir.as_local_node_id(trait_def_id) {
+ if !cx.access_levels.is_exported(n) {
+ // If a trait is being implemented for an item, and the
+ // trait is not exported, we don't need #[inline]
+ return;
}
- },
+ }
}
check_missing_inline_attrs(cx, &impl_item.attrs, impl_item.span, desc);