use syntax::ast;
use syntax::ast_util::{def_id_of_def, local_def, mtwt_resolve};
use syntax::ast_util::{path_to_ident, walk_pat, trait_method_to_ty_method};
+use syntax::parse::token::{IdentInterner, special_idents};
use syntax::parse::token;
-use syntax::parse::token::{IdentInterner, interner_get};
-use syntax::parse::token::special_idents;
use syntax::print::pprust::path_to_str;
use syntax::codemap::{Span, DUMMY_SP, Pos};
use syntax::opt_vec::OptVec;
pub type ExportMap2 = @RefCell<HashMap<NodeId, ~[Export2]>>;
pub struct Export2 {
- name: @str, // The name of the target.
+ name: ~str, // The name of the target.
def_id: DefId, // The definition of the target.
}
}
fn import_directive_subclass_to_str(&mut self,
- subclass: ImportDirectiveSubclass)
- -> @str {
+ subclass: ImportDirectiveSubclass)
+ -> ~str {
match subclass {
- SingleImport(_target, source) => self.session.str_of(source),
- GlobImport => @"*"
+ SingleImport(_target, source) => {
+ self.session.str_of(source).to_str()
+ }
+ GlobImport => ~"*"
}
}
fn import_path_to_str(&mut self,
- idents: &[Ident],
- subclass: ImportDirectiveSubclass)
- -> @str {
+ idents: &[Ident],
+ subclass: ImportDirectiveSubclass)
+ -> ~str {
if idents.is_empty() {
self.import_directive_subclass_to_str(subclass)
} else {
(format!("{}::{}",
- self.idents_to_str(idents),
- self.import_directive_subclass_to_str(subclass))).to_managed()
+ self.idents_to_str(idents),
+ self.import_directive_subclass_to_str(subclass)))
}
}
debug!("(resolving glob import) writing resolution `{}` in `{}` \
to `{}`",
- interner_get(name),
+ token::get_ident(name).get().to_str(),
self.module_to_str(containing_module),
self.module_to_str(module_));
match namebindings.def_for_namespace(ns) {
Some(d) => {
debug!("(computing exports) YES: export '{}' => {:?}",
- interner_get(name),
+ token::get_ident(name).get().to_str(),
def_id_of_def(d));
exports2.push(Export2 {
- name: interner_get(name),
+ name: token::get_ident(name).get().to_str(),
def_id: def_id_of_def(d)
});
}
match importresolution.target_for_namespace(ns) {
Some(target) => {
debug!("(computing exports) maybe export '{}'",
- interner_get(*name));
+ token::get_ident(*name).get().to_str());
self.add_exports_of_namebindings(exports2,
*name,
target.bindings,
for (&key, &binding_0) in map_0.iter() {
match map_i.find(&key) {
None => {
+ let string = token::get_ident(key);
self.resolve_error(
p.span,
format!("variable `{}` from pattern \\#1 is \
not bound in pattern \\#{}",
- interner_get(key), i + 1));
+ string.get(),
+ i + 1));
}
Some(binding_i) => {
if binding_0.binding_mode != binding_i.binding_mode {
+ let string = token::get_ident(key);
self.resolve_error(
binding_i.span,
format!("variable `{}` is bound with different \
mode in pattern \\#{} than in pattern \\#1",
- interner_get(key), i + 1));
+ string.get(),
+ i + 1));
}
}
}
for (&key, &binding) in map_i.iter() {
if !map_0.contains_key(&key) {
+ let string = token::get_ident(key);
self.resolve_error(
binding.span,
format!("variable `{}` from pattern \\#{} is \
not bound in pattern \\#1",
- interner_get(key), i + 1));
+ string.get(),
+ i + 1));
}
}
}
match self.resolve_bare_identifier_pattern(ident) {
FoundStructOrEnumVariant(def, lp)
if mode == RefutableMode => {
+ let string = token::get_ident(renamed);
debug!("(resolving pattern) resolving `{}` to \
struct or enum variant",
- interner_get(renamed));
+ string.get());
self.enforce_default_binding_mode(
pattern,
self.record_def(pattern.id, (def, lp));
}
FoundStructOrEnumVariant(..) => {
+ let string = token::get_ident(renamed);
self.resolve_error(pattern.span,
format!("declaration of `{}` \
shadows an enum \
variant or unit-like \
struct in scope",
- interner_get(renamed)));
+ string.get()));
}
FoundConst(def, lp) if mode == RefutableMode => {
+ let string = token::get_ident(renamed);
debug!("(resolving pattern) resolving `{}` to \
constant",
- interner_get(renamed));
+ string.get());
self.enforce_default_binding_mode(
pattern,
allowed here");
}
BareIdentifierPatternUnresolved => {
+ let string = token::get_ident(renamed);
debug!("(resolving pattern) binding `{}`",
- interner_get(renamed));
+ string.get());
let def = match mode {
RefutableMode => {
}
fn find_best_match_for_name(&mut self, name: &str, max_distance: uint)
- -> Option<@str> {
+ -> Option<~str> {
let this = &mut *self;
- let mut maybes: ~[@str] = ~[];
+ let mut maybes: ~[~str] = ~[];
let mut values: ~[uint] = ~[];
let mut j = {
let value_ribs = this.value_ribs.borrow();
let bindings = value_ribs.get()[j].bindings.borrow();
for (&k, _) in bindings.get().iter() {
- maybes.push(interner_get(k));
+ let string = token::get_ident(k);
+ maybes.push(string.get().to_str());
values.push(uint::MAX);
}
}
let mut smallest = 0;
- for (i, &other) in maybes.iter().enumerate() {
- values[i] = name.lev_distance(other);
+ for (i, other) in maybes.iter().enumerate() {
+ values[i] = name.lev_distance(*other);
if values[i] <= values[smallest] {
smallest = i;
self.resolve_error(expr.span,
format!("use of undeclared label \
`{}`",
- interner_get(label))),
+ token::get_ident(label)
+ .get()
+ .to_str())),
Some(DlDef(def @ DefLabel(_))) => {
// FIXME: is AllPublic correct?
self.record_def(expr.id, (def, AllPublic))
self.populate_module_if_necessary(module_);
let children = module_.children.borrow();
for (&name, _) in children.get().iter() {
- debug!("* {}", interner_get(name));
+ debug!("* {}", token::get_ident(name).get().to_str());
}
debug!("Import resolutions:");
}
}
- debug!("* {}:{}{}", interner_get(*name),
+ debug!("* {}:{}{}", token::get_ident(*name).get().to_str(),
value_repr, type_repr);
}
}