convert ast::meta_items to take @~strs
This commit is contained in:
parent
a2b754788d
commit
de5fdaf934
15 changed files with 64 additions and 63 deletions
|
@ -499,15 +499,15 @@ pub fn build_link_meta(sess: Session, c: &ast::crate, output: &Path,
|
||||||
|
|
||||||
fn hash(symbol_hasher: &hash::State, m: &@ast::meta_item) {
|
fn hash(symbol_hasher: &hash::State, m: &@ast::meta_item) {
|
||||||
match m.node {
|
match m.node {
|
||||||
ast::meta_name_value(ref key, value) => {
|
ast::meta_name_value(key, value) => {
|
||||||
symbol_hasher.write_str(len_and_str((*key)));
|
symbol_hasher.write_str(len_and_str(*key));
|
||||||
symbol_hasher.write_str(len_and_str_lit(value));
|
symbol_hasher.write_str(len_and_str_lit(value));
|
||||||
}
|
}
|
||||||
ast::meta_word(ref name) => {
|
ast::meta_word(name) => {
|
||||||
symbol_hasher.write_str(len_and_str((*name)));
|
symbol_hasher.write_str(len_and_str(*name));
|
||||||
}
|
}
|
||||||
ast::meta_list(ref name, ref mis) => {
|
ast::meta_list(name, ref mis) => {
|
||||||
symbol_hasher.write_str(len_and_str((*name)));
|
symbol_hasher.write_str(len_and_str(*name));
|
||||||
for mis.each |m_| {
|
for mis.each |m_| {
|
||||||
hash(symbol_hasher, m_);
|
hash(symbol_hasher, m_);
|
||||||
}
|
}
|
||||||
|
|
|
@ -346,7 +346,7 @@ pub mod test {
|
||||||
style: ast::attr_outer,
|
style: ast::attr_outer,
|
||||||
value: codemap::respan(codemap::dummy_sp(),
|
value: codemap::respan(codemap::dummy_sp(),
|
||||||
ast::meta_name_value(
|
ast::meta_name_value(
|
||||||
~"crate_type",
|
@~"crate_type",
|
||||||
codemap::respan(codemap::dummy_sp(),
|
codemap::respan(codemap::dummy_sp(),
|
||||||
ast::lit_str(@t)))),
|
ast::lit_str(@t)))),
|
||||||
is_sugared_doc: false
|
is_sugared_doc: false
|
||||||
|
|
|
@ -51,7 +51,7 @@ fn inject_libcore_ref(sess: Session,
|
||||||
spanned(ast::attribute_ {
|
spanned(ast::attribute_ {
|
||||||
style: ast::attr_inner,
|
style: ast::attr_inner,
|
||||||
value: spanned(ast::meta_name_value(
|
value: spanned(ast::meta_name_value(
|
||||||
~"vers",
|
@~"vers",
|
||||||
spanned(ast::lit_str(@CORE_VERSION.to_str()))
|
spanned(ast::lit_str(@CORE_VERSION.to_str()))
|
||||||
)),
|
)),
|
||||||
is_sugared_doc: false
|
is_sugared_doc: false
|
||||||
|
|
|
@ -262,7 +262,7 @@ mod __test {
|
||||||
fn mk_std(cx: &TestCtxt) -> @ast::view_item {
|
fn mk_std(cx: &TestCtxt) -> @ast::view_item {
|
||||||
let vers = ast::lit_str(@~"0.6");
|
let vers = ast::lit_str(@~"0.6");
|
||||||
let vers = nospan(vers);
|
let vers = nospan(vers);
|
||||||
let mi = ast::meta_name_value(~"vers", vers);
|
let mi = ast::meta_name_value(@~"vers", vers);
|
||||||
let mi = nospan(mi);
|
let mi = nospan(mi);
|
||||||
let id_std = cx.sess.ident_of(~"std");
|
let id_std = cx.sess.ident_of(~"std");
|
||||||
let vi = if is_std(cx) {
|
let vi = if is_std(cx) {
|
||||||
|
|
|
@ -1017,19 +1017,19 @@ fn write_int(writer: io::Writer, &&n: int) {
|
||||||
|
|
||||||
fn encode_meta_item(ebml_w: writer::Encoder, mi: meta_item) {
|
fn encode_meta_item(ebml_w: writer::Encoder, mi: meta_item) {
|
||||||
match mi.node {
|
match mi.node {
|
||||||
meta_word(ref name) => {
|
meta_word(name) => {
|
||||||
ebml_w.start_tag(tag_meta_item_word);
|
ebml_w.start_tag(tag_meta_item_word);
|
||||||
ebml_w.start_tag(tag_meta_item_name);
|
ebml_w.start_tag(tag_meta_item_name);
|
||||||
ebml_w.writer.write(str::to_bytes((*name)));
|
ebml_w.writer.write(str::to_bytes(*name));
|
||||||
ebml_w.end_tag();
|
ebml_w.end_tag();
|
||||||
ebml_w.end_tag();
|
ebml_w.end_tag();
|
||||||
}
|
}
|
||||||
meta_name_value(ref name, value) => {
|
meta_name_value(name, value) => {
|
||||||
match value.node {
|
match value.node {
|
||||||
lit_str(value) => {
|
lit_str(value) => {
|
||||||
ebml_w.start_tag(tag_meta_item_name_value);
|
ebml_w.start_tag(tag_meta_item_name_value);
|
||||||
ebml_w.start_tag(tag_meta_item_name);
|
ebml_w.start_tag(tag_meta_item_name);
|
||||||
ebml_w.writer.write(str::to_bytes((*name)));
|
ebml_w.writer.write(str::to_bytes(*name));
|
||||||
ebml_w.end_tag();
|
ebml_w.end_tag();
|
||||||
ebml_w.start_tag(tag_meta_item_value);
|
ebml_w.start_tag(tag_meta_item_value);
|
||||||
ebml_w.writer.write(str::to_bytes(*value));
|
ebml_w.writer.write(str::to_bytes(*value));
|
||||||
|
@ -1039,10 +1039,10 @@ fn encode_meta_item(ebml_w: writer::Encoder, mi: meta_item) {
|
||||||
_ => {/* FIXME (#623): encode other variants */ }
|
_ => {/* FIXME (#623): encode other variants */ }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
meta_list(ref name, ref items) => {
|
meta_list(name, ref items) => {
|
||||||
ebml_w.start_tag(tag_meta_item_list);
|
ebml_w.start_tag(tag_meta_item_list);
|
||||||
ebml_w.start_tag(tag_meta_item_name);
|
ebml_w.start_tag(tag_meta_item_name);
|
||||||
ebml_w.writer.write(str::to_bytes((*name)));
|
ebml_w.writer.write(str::to_bytes(*name));
|
||||||
ebml_w.end_tag();
|
ebml_w.end_tag();
|
||||||
for items.each |inner_item| {
|
for items.each |inner_item| {
|
||||||
encode_meta_item(ebml_w, **inner_item);
|
encode_meta_item(ebml_w, **inner_item);
|
||||||
|
|
|
@ -321,7 +321,7 @@ impl LanguageItemCollector {
|
||||||
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,
|
||||||
(/*bad*/copy *key),
|
(/*bad*/copy **key),
|
||||||
/*bad*/copy *value);
|
/*bad*/copy *value);
|
||||||
}
|
}
|
||||||
_ => {} // Skip.
|
_ => {} // Skip.
|
||||||
|
|
|
@ -346,13 +346,13 @@ impl ctxt {
|
||||||
|
|
||||||
for triples.each |pair| {
|
for triples.each |pair| {
|
||||||
let (meta, level, lintname) = /*bad*/copy *pair;
|
let (meta, level, lintname) = /*bad*/copy *pair;
|
||||||
match self.dict.find(&lintname) {
|
match self.dict.find(&*lintname) {
|
||||||
None => {
|
None => {
|
||||||
self.span_lint(
|
self.span_lint(
|
||||||
new_ctxt.get_level(unrecognized_lint),
|
new_ctxt.get_level(unrecognized_lint),
|
||||||
meta.span,
|
meta.span,
|
||||||
fmt!("unknown `%s` attribute: `%s`",
|
fmt!("unknown `%s` attribute: `%s`",
|
||||||
level_to_str(level), lintname));
|
level_to_str(level), *lintname));
|
||||||
}
|
}
|
||||||
Some(lint) => {
|
Some(lint) => {
|
||||||
|
|
||||||
|
@ -363,7 +363,7 @@ impl ctxt {
|
||||||
meta.span,
|
meta.span,
|
||||||
fmt!("%s(%s) overruled by outer forbid(%s)",
|
fmt!("%s(%s) overruled by outer forbid(%s)",
|
||||||
level_to_str(level),
|
level_to_str(level),
|
||||||
lintname, lintname));
|
*lintname, *lintname));
|
||||||
}
|
}
|
||||||
|
|
||||||
// we do multiple unneeded copies of the
|
// we do multiple unneeded copies of the
|
||||||
|
|
|
@ -783,11 +783,11 @@ pub fn mk_ctxt(s: session::Session,
|
||||||
let mut legacy_records = false;
|
let mut legacy_records = false;
|
||||||
for crate.node.attrs.each |attribute| {
|
for crate.node.attrs.each |attribute| {
|
||||||
match attribute.node.value.node {
|
match attribute.node.value.node {
|
||||||
ast::meta_word(ref w) if (*w) == ~"legacy_modes" => {
|
ast::meta_word(w) if *w == ~"legacy_modes" => {
|
||||||
legacy_modes = true;
|
legacy_modes = true;
|
||||||
if legacy_records { break; }
|
if legacy_records { break; }
|
||||||
}
|
}
|
||||||
ast::meta_word(ref w) if (*w) == ~"legacy_records" => {
|
ast::meta_word(w) if *w == ~"legacy_records" => {
|
||||||
legacy_records = true;
|
legacy_records = true;
|
||||||
if legacy_modes { break; }
|
if legacy_modes { break; }
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,7 +89,7 @@ impl PackageScript {
|
||||||
ast::meta_name_value(v, spanned {
|
ast::meta_name_value(v, spanned {
|
||||||
node: ast::lit_str(s),
|
node: ast::lit_str(s),
|
||||||
span: _}) => {
|
span: _}) => {
|
||||||
match v {
|
match *v {
|
||||||
~"id" => id = Some(*s),
|
~"id" => id = Some(*s),
|
||||||
~"vers" => vers = Some(*s),
|
~"vers" => vers = Some(*s),
|
||||||
_ => ()
|
_ => ()
|
||||||
|
@ -112,7 +112,7 @@ impl PackageScript {
|
||||||
ast::meta_name_value(v, spanned {
|
ast::meta_name_value(v, spanned {
|
||||||
node: ast::lit_str(s),
|
node: ast::lit_str(s),
|
||||||
span: _}) => {
|
span: _}) => {
|
||||||
match v {
|
match *v {
|
||||||
~"url" => url = Some(*s),
|
~"url" => url = Some(*s),
|
||||||
~"target" => target = Some(*s),
|
~"target" => target = Some(*s),
|
||||||
_ => ()
|
_ => ()
|
||||||
|
@ -133,7 +133,7 @@ impl PackageScript {
|
||||||
ast::meta_name_value(v, spanned {
|
ast::meta_name_value(v, spanned {
|
||||||
node: ast::lit_str(s),
|
node: ast::lit_str(s),
|
||||||
span: _}) => {
|
span: _}) => {
|
||||||
match v {
|
match *v {
|
||||||
~"file" => file = Some(*s),
|
~"file" => file = Some(*s),
|
||||||
_ => ()
|
_ => ()
|
||||||
}
|
}
|
||||||
|
@ -148,7 +148,7 @@ impl PackageScript {
|
||||||
for crate.node.attrs.each |a| {
|
for crate.node.attrs.each |a| {
|
||||||
match a.node.value.node {
|
match a.node.value.node {
|
||||||
ast::meta_list(v, mis) => {
|
ast::meta_list(v, mis) => {
|
||||||
match v {
|
match *v {
|
||||||
~"pkg" => {
|
~"pkg" => {
|
||||||
let (i, v) = load_pkg_attr(mis);
|
let (i, v) = load_pkg_attr(mis);
|
||||||
|
|
||||||
|
|
|
@ -110,7 +110,7 @@ fn fold_item(ctx: @ReadyCtx, item: @ast::item,
|
||||||
ast::meta_list(_, mis) => {
|
ast::meta_list(_, mis) => {
|
||||||
for mis.each |mi| {
|
for mis.each |mi| {
|
||||||
match mi.node {
|
match mi.node {
|
||||||
ast::meta_word(cmd) => cmds.push(cmd),
|
ast::meta_word(cmd) => cmds.push(copy *cmd),
|
||||||
_ => {}
|
_ => {}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -639,7 +639,7 @@ pub fn compile_input(sysroot: Option<Path>, input: driver::input, dir: &Path,
|
||||||
match a.node {
|
match a.node {
|
||||||
ast::meta_name_value(v, spanned {node: ast::lit_str(s),
|
ast::meta_name_value(v, spanned {node: ast::lit_str(s),
|
||||||
span: _}) => {
|
span: _}) => {
|
||||||
match v {
|
match *v {
|
||||||
~"name" => name = Some(*s),
|
~"name" => name = Some(*s),
|
||||||
~"vers" => vers = Some(*s),
|
~"vers" => vers = Some(*s),
|
||||||
~"uuid" => uuid = Some(*s),
|
~"uuid" => uuid = Some(*s),
|
||||||
|
@ -657,13 +657,13 @@ pub fn compile_input(sysroot: Option<Path>, input: driver::input, dir: &Path,
|
||||||
match a.node.value.node {
|
match a.node.value.node {
|
||||||
ast::meta_name_value(v, spanned {node: ast::lit_str(s),
|
ast::meta_name_value(v, spanned {node: ast::lit_str(s),
|
||||||
span: _}) => {
|
span: _}) => {
|
||||||
match v {
|
match *v {
|
||||||
~"crate_type" => crate_type = Some(*s),
|
~"crate_type" => crate_type = Some(*s),
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ast::meta_list(v, mis) => {
|
ast::meta_list(v, mis) => {
|
||||||
match v {
|
match *v {
|
||||||
~"link" => {
|
~"link" => {
|
||||||
let (n, v, u) = load_link_attr(mis);
|
let (n, v, u) = load_link_attr(mis);
|
||||||
|
|
||||||
|
|
|
@ -173,9 +173,9 @@ pub type meta_item = spanned<meta_item_>;
|
||||||
#[auto_decode]
|
#[auto_decode]
|
||||||
#[deriving_eq]
|
#[deriving_eq]
|
||||||
pub enum meta_item_ {
|
pub enum meta_item_ {
|
||||||
meta_word(~str),
|
meta_word(@~str),
|
||||||
meta_list(~str, ~[@meta_item]),
|
meta_list(@~str, ~[@meta_item]),
|
||||||
meta_name_value(~str, lit),
|
meta_name_value(@~str, lit),
|
||||||
}
|
}
|
||||||
|
|
||||||
pub type blk = spanned<blk_>;
|
pub type blk = spanned<blk_>;
|
||||||
|
|
|
@ -37,16 +37,16 @@ pub fn mk_name_value_item_str(name: @~str, value: @~str)
|
||||||
|
|
||||||
pub fn mk_name_value_item(name: @~str, +value: ast::lit)
|
pub fn mk_name_value_item(name: @~str, +value: ast::lit)
|
||||||
-> @ast::meta_item {
|
-> @ast::meta_item {
|
||||||
@dummy_spanned(ast::meta_name_value(/*bad*/ copy *name, value))
|
@dummy_spanned(ast::meta_name_value(name, value))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn mk_list_item(name: @~str, +items: ~[@ast::meta_item]) ->
|
pub fn mk_list_item(name: @~str, +items: ~[@ast::meta_item]) ->
|
||||||
@ast::meta_item {
|
@ast::meta_item {
|
||||||
@dummy_spanned(ast::meta_list(/*bad*/ copy *name, items))
|
@dummy_spanned(ast::meta_list(name, items))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn mk_word_item(name: @~str) -> @ast::meta_item {
|
pub fn mk_word_item(name: @~str) -> @ast::meta_item {
|
||||||
@dummy_spanned(ast::meta_word(/*bad*/ copy *name))
|
@dummy_spanned(ast::meta_word(name))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn mk_attr(item: @ast::meta_item) -> ast::attribute {
|
pub fn mk_attr(item: @ast::meta_item) -> ast::attribute {
|
||||||
|
@ -60,7 +60,7 @@ pub fn mk_sugared_doc_attr(text: ~str,
|
||||||
let lit = spanned(lo, hi, ast::lit_str(@text));
|
let lit = spanned(lo, hi, ast::lit_str(@text));
|
||||||
let attr = ast::attribute_ {
|
let attr = ast::attribute_ {
|
||||||
style: doc_comment_style(text),
|
style: doc_comment_style(text),
|
||||||
value: spanned(lo, hi, ast::meta_name_value(~"doc", lit)),
|
value: spanned(lo, hi, ast::meta_name_value(@~"doc", lit)),
|
||||||
is_sugared_doc: true
|
is_sugared_doc: true
|
||||||
};
|
};
|
||||||
spanned(lo, hi, attr)
|
spanned(lo, hi, attr)
|
||||||
|
@ -96,9 +96,9 @@ pub pure fn get_attr_name(attr: &ast::attribute) -> @~str {
|
||||||
|
|
||||||
pub pure fn get_meta_item_name(meta: @ast::meta_item) -> @~str {
|
pub pure fn get_meta_item_name(meta: @ast::meta_item) -> @~str {
|
||||||
match meta.node {
|
match meta.node {
|
||||||
ast::meta_word(ref n) => @/*bad*/ copy *n,
|
ast::meta_word(n) => n,
|
||||||
ast::meta_name_value(ref n, _) => @/*bad*/ copy *n,
|
ast::meta_name_value(n, _) => n,
|
||||||
ast::meta_list(ref n, _) => @/*bad*/ copy *n,
|
ast::meta_list(n, _) => n,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -343,8 +343,8 @@ pub fn find_inline_attr(attrs: &[ast::attribute]) -> inline_attr {
|
||||||
// FIXME (#2809)---validate the usage of #[inline] and #[inline(always)]
|
// FIXME (#2809)---validate the usage of #[inline] and #[inline(always)]
|
||||||
do vec::foldl(ia_none, attrs) |ia,attr| {
|
do vec::foldl(ia_none, attrs) |ia,attr| {
|
||||||
match attr.node.value.node {
|
match attr.node.value.node {
|
||||||
ast::meta_word(~"inline") => ia_hint,
|
ast::meta_word(@~"inline") => ia_hint,
|
||||||
ast::meta_list(~"inline", items) => {
|
ast::meta_list(@~"inline", items) => {
|
||||||
if !vec::is_empty(find_meta_items_by_name(items, ~"always")) {
|
if !vec::is_empty(find_meta_items_by_name(items, ~"always")) {
|
||||||
ia_always
|
ia_always
|
||||||
} else if !vec::is_empty(
|
} else if !vec::is_empty(
|
||||||
|
|
|
@ -228,9 +228,10 @@ pub impl ext_ctxt_ast_builder for ext_ctxt {
|
||||||
let non_camel_case_attribute = respan(dummy_sp(), ast::attribute_ {
|
let non_camel_case_attribute = respan(dummy_sp(), ast::attribute_ {
|
||||||
style: ast::attr_outer,
|
style: ast::attr_outer,
|
||||||
value: respan(dummy_sp(),
|
value: respan(dummy_sp(),
|
||||||
ast::meta_list(~"allow", ~[
|
ast::meta_list(@~"allow", ~[
|
||||||
@respan(dummy_sp(),
|
@respan(dummy_sp(),
|
||||||
ast::meta_word(~"non_camel_case_types"))
|
ast::meta_word(
|
||||||
|
@~"non_camel_case_types"))
|
||||||
])),
|
])),
|
||||||
is_sugared_doc: false
|
is_sugared_doc: false
|
||||||
});
|
});
|
||||||
|
|
|
@ -126,22 +126,22 @@ impl parser_attr for Parser {
|
||||||
|
|
||||||
fn parse_meta_item() -> @ast::meta_item {
|
fn parse_meta_item() -> @ast::meta_item {
|
||||||
let lo = self.span.lo;
|
let lo = self.span.lo;
|
||||||
let name = *self.id_to_str(self.parse_ident());
|
let name = self.id_to_str(self.parse_ident());
|
||||||
match self.token {
|
match self.token {
|
||||||
token::EQ => {
|
token::EQ => {
|
||||||
self.bump();
|
self.bump();
|
||||||
let lit = self.parse_lit();
|
let lit = self.parse_lit();
|
||||||
let mut hi = self.span.hi;
|
let mut hi = self.span.hi;
|
||||||
return @spanned(lo, hi, ast::meta_name_value(name, lit));
|
@spanned(lo, hi, ast::meta_name_value(name, lit))
|
||||||
}
|
}
|
||||||
token::LPAREN => {
|
token::LPAREN => {
|
||||||
let inner_items = self.parse_meta_seq();
|
let inner_items = self.parse_meta_seq();
|
||||||
let mut hi = self.span.hi;
|
let mut hi = self.span.hi;
|
||||||
return @spanned(lo, hi, ast::meta_list(name, inner_items));
|
@spanned(lo, hi, ast::meta_list(name, inner_items))
|
||||||
}
|
}
|
||||||
_ => {
|
_ => {
|
||||||
let mut hi = self.span.hi;
|
let mut hi = self.span.hi;
|
||||||
return @spanned(lo, hi, ast::meta_word(name));
|
@spanned(lo, hi, ast::meta_word(name))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1816,13 +1816,13 @@ pub fn print_type_params(s: @ps, &¶ms: ~[ast::ty_param]) {
|
||||||
pub fn print_meta_item(s: @ps, &&item: @ast::meta_item) {
|
pub fn print_meta_item(s: @ps, &&item: @ast::meta_item) {
|
||||||
ibox(s, indent_unit);
|
ibox(s, indent_unit);
|
||||||
match item.node {
|
match item.node {
|
||||||
ast::meta_word(ref name) => word(s.s, *name),
|
ast::meta_word(name) => word(s.s, *name),
|
||||||
ast::meta_name_value(ref name, value) => {
|
ast::meta_name_value(name, value) => {
|
||||||
word_space(s, *name);
|
word_space(s, *name);
|
||||||
word_space(s, ~"=");
|
word_space(s, ~"=");
|
||||||
print_literal(s, @value);
|
print_literal(s, @value);
|
||||||
}
|
}
|
||||||
ast::meta_list(ref name, ref items) => {
|
ast::meta_list(name, ref items) => {
|
||||||
word(s.s, *name);
|
word(s.s, *name);
|
||||||
popen(s);
|
popen(s);
|
||||||
commasep(
|
commasep(
|
||||||
|
|
Loading…
Reference in a new issue