-
- match item.node {
- hir::ItemExternCrate(..) | hir::ItemMod(..) |
- hir::ItemUse(..) | hir::ItemGlobalAsm(..) => {}
- hir::ItemConst(..) | hir::ItemStatic(..) |
- hir::ItemTy(..) | hir::ItemFn(..) => {
- self.check_item(item.id).generics().predicates().ty();
- }
- hir::ItemTrait(.., ref trait_item_refs) => {
- self.check_item(item.id).generics().predicates();
- for trait_item_ref in trait_item_refs {
- let check = self.check_item(trait_item_ref.id.node_id);
- check.generics().predicates();
- if trait_item_ref.kind != hir::AssociatedItemKind::Type ||
- trait_item_ref.defaultness.has_value() {
- check.ty();
- }
- }
- }
- hir::ItemEnum(ref def, _) => {
- self.check_item(item.id).generics().predicates();
- for variant in &def.variants {
- for field in variant.node.data.fields() {
- self.check_item(field.id).ty();
- }
- }
- }
- hir::ItemForeignMod(ref foreign_mod) => {
- for foreign_item in &foreign_mod.items {
- self.check_item(foreign_item.id).generics().predicates().ty();
- }
- }
- hir::ItemStruct(ref struct_def, _) |
- hir::ItemUnion(ref struct_def, _) => {
- self.check_item(item.id).generics().predicates();
- for field in struct_def.fields() {
- self.check_item(field.id).ty();
- }
- }
- hir::ItemDefaultImpl(..) => {
- self.check_item(item.id).impl_trait_ref();
- }
- hir::ItemImpl(.., ref trait_ref, _, ref impl_item_refs) => {
- {
- let check = self.check_item(item.id);
- check.ty().generics().predicates();
- if trait_ref.is_some() {
- check.impl_trait_ref();
- }
- }
- for impl_item_ref in impl_item_refs {
- let impl_item = self.tcx.hir.impl_item(impl_item_ref.id);
- self.check_item(impl_item.id).generics().predicates().ty();
- }
- }
- }
-