mod build_reduced_graph;
mod resolve_imports;
+macro_rules! resolve_err {
+ ($this:expr, $($rest:tt)*) => {
+ if $this.emit_errors {
+ span_err!($this.session, $($rest)*);
+ }
+ }
+}
+
#[derive(Copy, Clone)]
struct BindingInfo {
span: Span,
if module.external_module_children.borrow().contains_key(&name) {
span_err!(self.session, span, E0259,
"an external crate named `{}` has already \
- been imported into this module",
- &token::get_name(name));
+ been imported into this module",
+ name);
}
}
if module.external_module_children.borrow().contains_key(&name) {
span_err!(self.session, span, E0260,
"the name `{}` conflicts with an external \
- crate that has been imported into this \
- module",
- &token::get_name(name));
+ crate that has been imported into this \
+ module",
+ name);
}
}
Indeterminate => {
debug!("(resolving module path for import) module \
resolution is indeterminate: {}",
- token::get_name(name));
+ name);
return Indeterminate;
}
Success((target, used_proxy)) => {
match type_def.module_def {
None => {
let msg = format!("Not a module `{}`",
- token::get_name(name));
+ name);
return Failed(Some((span, msg)));
}
None => {
// There are no type bindings at all.
let msg = format!("Not a module `{}`",
- token::get_name(name));
+ name);
return Failed(Some((span, msg)));
}
}
-> ResolveResult<(Target, bool)> {
debug!("(resolving item in lexical scope) resolving `{}` in \
namespace {:?} in `{}`",
- token::get_name(name),
+ name,
namespace,
module_to_string(&*module_));
namespace,
PathSearch,
true) {
- Failed(Some((span, msg))) =>
- self.resolve_error(span, &format!("failed to resolve. {}",
- msg)),
+ Failed(Some((span, msg))) => {
+ self.resolve_error(span,
+ &format!("failed to resolve. {}",
+ msg));
+ },
Failed(None) => (), // Continue up the search chain.
Indeterminate => {
// We couldn't see through the higher scope because of an
allow_private_imports: bool)
-> ResolveResult<(Target, bool)> {
debug!("(resolving name in module) resolving `{}` in `{}`",
- &token::get_name(name),
+ name,
module_to_string(&*module_));
// First, check the direct children of the module.
// We're out of luck.
debug!("(resolving name in module) failed to resolve `{}`",
- &token::get_name(name));
+ name);
return Failed(None);
}
match orig_module.children.borrow().get(&name) {
None => {
debug!("!!! (with scope) didn't find `{}` in `{}`",
- token::get_name(name),
+ name,
module_to_string(&*orig_module));
}
Some(name_bindings) => {
None => {
debug!("!!! (with scope) didn't find module \
for `{}` in `{}`",
- token::get_name(name),
+ name,
module_to_string(&*orig_module));
}
Some(module_) => {
let name = item.ident.name;
debug!("(resolving item) resolving {}",
- token::get_name(name));
+ name);
match item.node {
ItemEnum(_, ref generics) |
used for a type \
parameter in this type \
parameter list",
- token::get_name(name)))
+ name))
}
seen_bindings.insert(name);
let path_str = path_names_to_string(&trait_ref.path, 0);
self.resolve_error(span,
&format!("method `{}` is not a member of trait `{}`",
- token::get_name(name),
+ name,
path_str));
}
}
p.span,
&format!("variable `{}` from pattern #1 is \
not bound in pattern #{}",
- token::get_name(key),
+ key,
i + 1));
}
Some(binding_i) => {
binding_i.span,
&format!("variable `{}` is bound with different \
mode in pattern #{} than in pattern #1",
- token::get_name(key),
+ key,
i + 1));
}
}
binding.span,
&format!("variable `{}` from pattern {}{} is \
not bound in pattern {}1",
- token::get_name(key),
+ key,
"#", i + 1, "#"));
}
}
if mode == RefutableMode => {
debug!("(resolving pattern) resolving `{}` to \
struct or enum variant",
- token::get_name(renamed));
+ renamed);
self.enforce_default_binding_mode(
pattern,
&format!("declaration of `{}` shadows an enum \
variant or unit-like struct in \
scope",
- token::get_name(renamed)));
+ renamed));
}
FoundConst(def, lp) if mode == RefutableMode => {
debug!("(resolving pattern) resolving `{}` to \
constant",
- token::get_name(renamed));
+ renamed);
self.enforce_default_binding_mode(
pattern,
}
BareIdentifierPatternUnresolved => {
debug!("(resolving pattern) binding `{}`",
- token::get_name(renamed));
+ renamed);
let def = DefLocal(pattern.id);
Success((target, _)) => {
debug!("(resolve bare identifier pattern) succeeded in \
finding {} at {:?}",
- token::get_name(name),
+ name,
target.bindings.value_def.borrow());
match *target.bindings.value_def.borrow() {
None => {
}
debug!("(resolve bare identifier pattern) failed to find {}",
- token::get_name(name));
+ name);
return BareIdentifierPatternUnresolved;
}
}
// found a module instead. Modules don't have defs.
debug!("(resolving item path by identifier in lexical \
scope) failed to resolve {} after success...",
- token::get_name(name));
+ name);
return None;
}
Some(def) => {
debug!("(resolving item path in lexical scope) \
resolved `{}` to item",
- token::get_name(name));
+ name);
// This lookup is "all public" because it only searched
// for one identifier in the current module (couldn't
// have passed through reexports or anything like that.
}
Failed(err) => {
debug!("(resolving item path by identifier in lexical scope) \
- failed to resolve {}", token::get_name(name));
+ failed to resolve {}", name);
if let Some((span, msg)) = err {
self.resolve_error(span, &format!("failed to resolve. {}", msg))
fn get_traits_containing_item(&mut self, name: Name) -> Vec<DefId> {
debug!("(getting traits containing item) looking for '{}'",
- token::get_name(name));
+ name);
fn add_trait_info(found_traits: &mut Vec<DefId>,
trait_def_id: DefId,
debug!("(adding trait info) found trait {}:{} for method '{}'",
trait_def_id.krate,
trait_def_id.node,
- token::get_name(name));
+ name);
found_traits.push(trait_def_id);
}
debug!("Children:");
build_reduced_graph::populate_module_if_necessary(self, &module_);
for (&name, _) in module_.children.borrow().iter() {
- debug!("* {}", token::get_name(name));
+ debug!("* {}", name);
}
debug!("Import resolutions:");
}
}
- debug!("* {}:{}{}", token::get_name(name), value_repr, type_repr);
+ debug!("* {}:{}{}", name, value_repr, type_repr);
}
}
}
-> ResolveResult<()> {
debug!("(resolving single import) resolving `{}` = `{}::{}` from \
`{}` id {}, last private {:?}",
- token::get_name(target),
+ target,
module_to_string(&*target_module),
- token::get_name(source),
+ source,
module_to_string(module_),
directive.id,
lp);
value_result = BoundResult(target_module.clone(),
(*child_name_bindings).clone());
if directive.is_public && !child_name_bindings.is_public(ValueNS) {
- let msg = format!("`{}` is private", token::get_name(source));
+ let msg = format!("`{}` is private", source);
span_err!(self.resolver.session, directive.span, E0364, "{}", &msg);
pub_err = true;
}
type_result = BoundResult(target_module.clone(),
(*child_name_bindings).clone());
if !pub_err && directive.is_public && !child_name_bindings.is_public(TypeNS) {
- let msg = format!("`{}` is private", token::get_name(source));
+ let msg = format!("`{}` is private", source);
span_err!(self.resolver.session, directive.span, E0365, "{}", &msg);
}
}
if value_result.is_unbound() && type_result.is_unbound() {
let msg = format!("There is no `{}` in `{}`",
- token::get_name(source),
+ source,
module_to_string(&target_module));
return ResolveResult::Failed(Some((directive.span, msg)));
}
for (ident, target_import_resolution) in import_resolutions.iter() {
debug!("(resolving glob import) writing module resolution \
{} into `{}`",
- token::get_name(*ident),
+ *ident,
module_to_string(module_));
if !target_import_resolution.is_public {
debug!("(resolving glob import) writing resolution `{}` in `{}` \
to `{}`",
- &token::get_name(name),
+ name,
module_to_string(&*containing_module),
module_to_string(module_));
let msg = format!("a {} named `{}` has already been imported \
in this module",
namespace_name,
- &token::get_name(name));
+ name);
span_err!(self.resolver.session, import_directive.span, E0251, "{}", msg);
} else {
let target = Target::new(containing_module.clone(),
namespace: Namespace) {
let target = import_resolution.target_for_namespace(namespace);
debug!("check_for_conflicting_import: {}; target exists: {}",
- &token::get_name(name),
+ name,
target.is_some());
match target {
span_err!(self.resolver.session, import_span, E0252,
"a {} named `{}` has already been imported \
in this module", ns_word,
- &token::get_name(name));
+ name);
let use_id = import_resolution.id(namespace);
let item = self.resolver.ast_map.expect_item(use_id);
// item is syntax::ast::Item;
span_note!(self.resolver.session, item.span,
"previous import of `{}` here",
- token::get_name(name));
+ name);
}
Some(_) | None => {}
}
namespace: Namespace) {
if !name_bindings.defined_in_namespace_with(namespace, DefModifiers::IMPORTABLE) {
let msg = format!("`{}` is not directly importable",
- token::get_name(name));
+ name);
span_err!(self.resolver.session, import_span, E0253, "{}", &msg[..]);
}
}
let msg = format!("import `{0}` conflicts with imported \
crate in this module \
(maybe you meant `use {0}::*`?)",
- &token::get_name(name));
+ name);
span_err!(self.resolver.session, import_span, E0254, "{}", &msg[..]);
}
Some(_) | None => {}
if let Some(ref value) = *name_bindings.value_def.borrow() {
span_err!(self.resolver.session, import_span, E0255,
"import `{}` conflicts with value in this module",
- &token::get_name(name));
+ name);
if let Some(span) = value.value_span {
self.resolver.session.span_note(span, "conflicting value here");
}
};
span_err!(self.resolver.session, import_span, E0256,
"import `{}` conflicts with {}",
- &token::get_name(name), what);
+ name, what);
if let Some(span) = ty.type_span {
self.resolver.session.span_note(span, note);
}