use std::rc::{Rc, Weak};
use std::uint;
+// NB: This module needs to be declared first so diagnostics are
+// registered before they are used.
+pub mod diagnostics;
+
mod check_unused;
mod record_exports;
mod build_reduced_graph;
in this module",
namespace_name,
token::get_name(name).get());
- self.session.span_err(import_directive.span, msg.as_slice());
+ span_err!(self.session, import_directive.span, E0251, "{}", msg.as_slice());
} else {
let target = Target::new(containing_module.clone(),
name_bindings.clone(),
ValueNS => "value",
},
token::get_name(name).get());
- self.session.span_err(import_span, &msg[]);
+ span_err!(self.session, import_span, E0252, "{}", &msg[]);
}
Some(_) | None => {}
}
if !name_bindings.defined_in_namespace_with(namespace, IMPORTABLE) {
let msg = format!("`{}` is not directly importable",
token::get_name(name));
- self.session.span_err(import_span, &msg[]);
+ span_err!(self.session, import_span, E0253, "{}", &msg[]);
}
}
crate in this module \
(maybe you meant `use {0}::*`?)",
token::get_name(name).get());
- self.session.span_err(import_span, &msg[]);
+ span_err!(self.session, import_span, E0254, "{}", &msg[]);
}
Some(_) | None => {}
}
let msg = format!("import `{}` conflicts with value \
in this module",
token::get_name(name).get());
- self.session.span_err(import_span, &msg[]);
+ span_err!(self.session, import_span, E0255, "{}", &msg[]);
if let Some(span) = value.value_span {
self.session.span_note(span,
"conflicting value here");
let msg = format!("import `{}` conflicts with type in \
this module",
token::get_name(name).get());
- self.session.span_err(import_span, &msg[]);
+ span_err!(self.session, import_span, E0256, "{}", &msg[]);
if let Some(span) = ty.type_span {
self.session.span_note(span,
"note conflicting type here")
let msg = format!("inherent implementations \
are only allowed on types \
defined in the current module");
- self.session.span_err(span, &msg[]);
+ span_err!(self.session, span, E0257, "{}", &msg[]);
self.session.span_note(import_span,
"import from other module here")
}
let msg = format!("import `{}` conflicts with existing \
submodule",
token::get_name(name).get());
- self.session.span_err(import_span, &msg[]);
+ span_err!(self.session, import_span, E0258, "{}", &msg[]);
if let Some(span) = ty.type_span {
self.session.span_note(span,
"note conflicting module here")
}
if module.external_module_children.borrow().contains_key(&name) {
- self.session
- .span_err(span,
- &format!("an external crate named `{}` has already \
+ span_err!(self.session, span, E0259,
+ "an external crate named `{}` has already \
been imported into this module",
- token::get_name(name).get())[]);
+ token::get_name(name).get());
}
}
}
if module.external_module_children.borrow().contains_key(&name) {
- self.session
- .span_err(span,
- &format!("the name `{}` conflicts with an external \
+ span_err!(self.session, span, E0260,
+ "the name `{}` conflicts with an external \
crate that has been imported into this \
module",
- token::get_name(name).get())[]);
+ token::get_name(name).get());
}
}
let module_name = self.module_to_string(&*search_module);
let mut span = span;
let msg = if "???" == &module_name[] {
- span.hi = span.lo + Pos::from_uint(segment_name.get().len());
+ span.hi = span.lo + Pos::from_usize(segment_name.get().len());
match search_parent_externals(name,
&self.current_module) {
let msg = format!("Could not find `{}` in `{}`",
// idx +- 1 to account for the
// colons on either side
- &mpath[(idx + 1)..],
- &mpath[..(idx - 1)]);
+ &mpath[idx + 1..],
+ &mpath[..idx - 1]);
return Failed(Some((span, msg)));
},
None => {
for (i, rib) in ribs.iter().enumerate().rev() {
match rib.bindings.get(&name).cloned() {
Some(def_like) => {
- return self.upvarify(&ribs[(i + 1)..], def_like, span);
+ return self.upvarify(&ribs[i + 1..], def_like, span);
}
None => {
// Continue.