librustc: convert LangItemsCollector::item_refs to take @~str as a key
This commit is contained in:
parent
e95f21f7be
commit
04334c1ae0
1 changed files with 41 additions and 42 deletions
|
@ -256,45 +256,46 @@ fn LanguageItemCollector(crate: @crate,
|
||||||
-> LanguageItemCollector/&r {
|
-> LanguageItemCollector/&r {
|
||||||
let item_refs = HashMap();
|
let item_refs = HashMap();
|
||||||
|
|
||||||
item_refs.insert(~"const", ConstTraitLangItem as uint);
|
item_refs.insert(@~"const", ConstTraitLangItem as uint);
|
||||||
item_refs.insert(~"copy", CopyTraitLangItem as uint);
|
item_refs.insert(@~"copy", CopyTraitLangItem as uint);
|
||||||
item_refs.insert(~"owned", OwnedTraitLangItem as uint);
|
item_refs.insert(@~"owned", OwnedTraitLangItem as uint);
|
||||||
item_refs.insert(~"durable", DurableTraitLangItem as uint);
|
item_refs.insert(@~"durable", DurableTraitLangItem as uint);
|
||||||
|
|
||||||
item_refs.insert(~"drop", DropTraitLangItem as uint);
|
item_refs.insert(@~"drop", DropTraitLangItem as uint);
|
||||||
|
|
||||||
item_refs.insert(~"add", AddTraitLangItem as uint);
|
item_refs.insert(@~"add", AddTraitLangItem as uint);
|
||||||
item_refs.insert(~"sub", SubTraitLangItem as uint);
|
item_refs.insert(@~"sub", SubTraitLangItem as uint);
|
||||||
item_refs.insert(~"mul", MulTraitLangItem as uint);
|
item_refs.insert(@~"mul", MulTraitLangItem as uint);
|
||||||
item_refs.insert(~"div", DivTraitLangItem as uint);
|
item_refs.insert(@~"div", DivTraitLangItem as uint);
|
||||||
item_refs.insert(~"modulo", ModuloTraitLangItem as uint);
|
item_refs.insert(@~"modulo", ModuloTraitLangItem as uint);
|
||||||
item_refs.insert(~"neg", NegTraitLangItem as uint);
|
item_refs.insert(@~"neg", NegTraitLangItem as uint);
|
||||||
item_refs.insert(~"not", NotTraitLangItem as uint);
|
item_refs.insert(@~"not", NotTraitLangItem as uint);
|
||||||
item_refs.insert(~"bitxor", BitXorTraitLangItem as uint);
|
item_refs.insert(@~"bitxor", BitXorTraitLangItem as uint);
|
||||||
item_refs.insert(~"bitand", BitAndTraitLangItem as uint);
|
item_refs.insert(@~"bitand", BitAndTraitLangItem as uint);
|
||||||
item_refs.insert(~"bitor", BitOrTraitLangItem as uint);
|
item_refs.insert(@~"bitor", BitOrTraitLangItem as uint);
|
||||||
item_refs.insert(~"shl", ShlTraitLangItem as uint);
|
item_refs.insert(@~"shl", ShlTraitLangItem as uint);
|
||||||
item_refs.insert(~"shr", ShrTraitLangItem as uint);
|
item_refs.insert(@~"shr", ShrTraitLangItem as uint);
|
||||||
item_refs.insert(~"index", IndexTraitLangItem as uint);
|
item_refs.insert(@~"index", IndexTraitLangItem as uint);
|
||||||
|
|
||||||
item_refs.insert(~"eq", EqTraitLangItem as uint);
|
item_refs.insert(@~"eq", EqTraitLangItem as uint);
|
||||||
item_refs.insert(~"ord", OrdTraitLangItem as uint);
|
item_refs.insert(@~"ord", OrdTraitLangItem as uint);
|
||||||
|
|
||||||
item_refs.insert(~"str_eq", StrEqFnLangItem as uint);
|
item_refs.insert(@~"str_eq", StrEqFnLangItem as uint);
|
||||||
item_refs.insert(~"uniq_str_eq", UniqStrEqFnLangItem as uint);
|
item_refs.insert(@~"uniq_str_eq", UniqStrEqFnLangItem as uint);
|
||||||
item_refs.insert(~"annihilate", AnnihilateFnLangItem as uint);
|
item_refs.insert(@~"annihilate", AnnihilateFnLangItem as uint);
|
||||||
item_refs.insert(~"log_type", LogTypeFnLangItem as uint);
|
item_refs.insert(@~"log_type", LogTypeFnLangItem as uint);
|
||||||
item_refs.insert(~"fail_", FailFnLangItem as uint);
|
item_refs.insert(@~"fail_", FailFnLangItem as uint);
|
||||||
item_refs.insert(~"fail_bounds_check", FailBoundsCheckFnLangItem as uint);
|
item_refs.insert(@~"fail_bounds_check",
|
||||||
item_refs.insert(~"exchange_malloc", ExchangeMallocFnLangItem as uint);
|
FailBoundsCheckFnLangItem as uint);
|
||||||
item_refs.insert(~"exchange_free", ExchangeFreeFnLangItem as uint);
|
item_refs.insert(@~"exchange_malloc", ExchangeMallocFnLangItem as uint);
|
||||||
item_refs.insert(~"malloc", MallocFnLangItem as uint);
|
item_refs.insert(@~"exchange_free", ExchangeFreeFnLangItem as uint);
|
||||||
item_refs.insert(~"free", FreeFnLangItem as uint);
|
item_refs.insert(@~"malloc", MallocFnLangItem as uint);
|
||||||
item_refs.insert(~"borrow_as_imm", BorrowAsImmFnLangItem as uint);
|
item_refs.insert(@~"free", FreeFnLangItem as uint);
|
||||||
item_refs.insert(~"return_to_mut", ReturnToMutFnLangItem as uint);
|
item_refs.insert(@~"borrow_as_imm", BorrowAsImmFnLangItem as uint);
|
||||||
item_refs.insert(~"check_not_borrowed",
|
item_refs.insert(@~"return_to_mut", ReturnToMutFnLangItem as uint);
|
||||||
|
item_refs.insert(@~"check_not_borrowed",
|
||||||
CheckNotBorrowedFnLangItem as uint);
|
CheckNotBorrowedFnLangItem as uint);
|
||||||
item_refs.insert(~"strdup_uniq", StrDupUniqFnLangItem as uint);
|
item_refs.insert(@~"strdup_uniq", StrDupUniqFnLangItem as uint);
|
||||||
|
|
||||||
LanguageItemCollector {
|
LanguageItemCollector {
|
||||||
crate: crate,
|
crate: crate,
|
||||||
|
@ -310,19 +311,17 @@ struct LanguageItemCollector {
|
||||||
crate: @crate,
|
crate: @crate,
|
||||||
session: Session,
|
session: Session,
|
||||||
|
|
||||||
item_refs: HashMap<~str,uint>,
|
item_refs: HashMap<@~str, uint>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl LanguageItemCollector {
|
impl LanguageItemCollector {
|
||||||
fn match_and_collect_meta_item(item_def_id: def_id,
|
fn match_and_collect_meta_item(item_def_id: def_id,
|
||||||
meta_item: meta_item) {
|
meta_item: meta_item) {
|
||||||
match meta_item.node {
|
match meta_item.node {
|
||||||
meta_name_value(ref key, literal) => {
|
meta_name_value(key, literal) => {
|
||||||
match literal.node {
|
match literal.node {
|
||||||
lit_str(value) => {
|
lit_str(value) => {
|
||||||
self.match_and_collect_item(item_def_id,
|
self.match_and_collect_item(item_def_id, key, value);
|
||||||
(/*bad*/copy **key),
|
|
||||||
/*bad*/copy *value);
|
|
||||||
}
|
}
|
||||||
_ => {} // Skip.
|
_ => {} // Skip.
|
||||||
}
|
}
|
||||||
|
@ -347,8 +346,8 @@ impl LanguageItemCollector {
|
||||||
self.items.items[item_index] = Some(item_def_id);
|
self.items.items[item_index] = Some(item_def_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn match_and_collect_item(item_def_id: def_id, key: ~str, value: ~str) {
|
fn match_and_collect_item(item_def_id: def_id, key: @~str, value: @~str) {
|
||||||
if key != ~"lang" {
|
if *key != ~"lang" {
|
||||||
return; // Didn't match.
|
return; // Didn't match.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -394,7 +393,7 @@ impl LanguageItemCollector {
|
||||||
for self.item_refs.each |&key, &item_ref| {
|
for self.item_refs.each |&key, &item_ref| {
|
||||||
match self.items.items[item_ref] {
|
match self.items.items[item_ref] {
|
||||||
None => {
|
None => {
|
||||||
self.session.err(fmt!("no item found for `%s`", key));
|
self.session.err(fmt!("no item found for `%s`", *key));
|
||||||
}
|
}
|
||||||
Some(_) => {
|
Some(_) => {
|
||||||
// OK.
|
// OK.
|
||||||
|
|
Loading…
Reference in a new issue