use crate::{Module, ModuleOrUniformRoot, NameBindingKind, ParentScope, PathResult};
use crate::{ResolutionError, Resolver, Segment, UseError};
-use log::debug;
-use rustc::hir::def::Namespace::{self, *};
-use rustc::hir::def::{self, CtorKind, DefKind, PartialRes, PerNS};
-use rustc::hir::def_id::{DefId, CRATE_DEF_INDEX};
-use rustc::hir::TraitCandidate;
use rustc::{bug, lint, span_bug};
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
+use rustc_errors::DiagnosticId;
+use rustc_hir::def::Namespace::{self, *};
+use rustc_hir::def::{self, CtorKind, DefKind, PartialRes, PerNS};
+use rustc_hir::def_id::{DefId, CRATE_DEF_INDEX};
+use rustc_hir::TraitCandidate;
use rustc_span::symbol::{kw, sym};
use rustc_span::Span;
use smallvec::{smallvec, SmallVec};
use syntax::visit::{self, FnKind, Visitor};
use syntax::{unwrap_or, walk_list};
+use log::debug;
use std::collections::BTreeSet;
use std::mem::replace;
}
}
- fn error_code(self, has_unexpected_resolution: bool) -> &'static str {
- syntax::diagnostic_used!(E0404);
- syntax::diagnostic_used!(E0405);
- syntax::diagnostic_used!(E0412);
- syntax::diagnostic_used!(E0422);
- syntax::diagnostic_used!(E0423);
- syntax::diagnostic_used!(E0425);
- syntax::diagnostic_used!(E0531);
- syntax::diagnostic_used!(E0532);
- syntax::diagnostic_used!(E0573);
- syntax::diagnostic_used!(E0574);
- syntax::diagnostic_used!(E0575);
- syntax::diagnostic_used!(E0576);
+ fn error_code(self, has_unexpected_resolution: bool) -> DiagnosticId {
+ use rustc_errors::error_code;
match (self, has_unexpected_resolution) {
- (PathSource::Trait(_), true) => "E0404",
- (PathSource::Trait(_), false) => "E0405",
- (PathSource::Type, true) => "E0573",
- (PathSource::Type, false) => "E0412",
- (PathSource::Struct, true) => "E0574",
- (PathSource::Struct, false) => "E0422",
- (PathSource::Expr(..), true) => "E0423",
- (PathSource::Expr(..), false) => "E0425",
- (PathSource::Pat, true) | (PathSource::TupleStruct, true) => "E0532",
- (PathSource::Pat, false) | (PathSource::TupleStruct, false) => "E0531",
- (PathSource::TraitItem(..), true) => "E0575",
- (PathSource::TraitItem(..), false) => "E0576",
+ (PathSource::Trait(_), true) => error_code!(E0404),
+ (PathSource::Trait(_), false) => error_code!(E0405),
+ (PathSource::Type, true) => error_code!(E0573),
+ (PathSource::Type, false) => error_code!(E0412),
+ (PathSource::Struct, true) => error_code!(E0574),
+ (PathSource::Struct, false) => error_code!(E0422),
+ (PathSource::Expr(..), true) => error_code!(E0423),
+ (PathSource::Expr(..), false) => error_code!(E0425),
+ (PathSource::Pat, true) | (PathSource::TupleStruct, true) => error_code!(E0532),
+ (PathSource::Pat, false) | (PathSource::TupleStruct, false) => error_code!(E0531),
+ (PathSource::TraitItem(..), true) => error_code!(E0575),
+ (PathSource::TraitItem(..), false) => error_code!(E0576),
}
}
}
self.resolve_adt(item, generics);
}
- ItemKind::Impl(.., ref generics, ref opt_trait_ref, ref self_type, ref impl_items) => {
- self.resolve_implementation(
- generics,
- opt_trait_ref,
- &self_type,
- item.id,
- impl_items,
- )
+ ItemKind::Impl {
+ ref generics,
+ ref of_trait,
+ ref self_ty,
+ items: ref impl_items,
+ ..
+ } => {
+ self.resolve_implementation(generics, of_trait, &self_ty, item.id, impl_items);
}
ItemKind::Trait(.., ref generics, ref bounds, ref trait_items) => {