Change ast::meta_name_value to accept any literal, not just string
This isn't useful for much of anything yet, since metadata::encoder doesn't know how to handle the non-string variants. Issue #611
This commit is contained in:
parent
8261d2e6fb
commit
2cb129355b
10 changed files with 94 additions and 51 deletions
|
|
@ -104,7 +104,7 @@ type meta_item = spanned[meta_item_];
|
|||
tag meta_item_ {
|
||||
meta_word(ident);
|
||||
meta_list(ident, vec[@meta_item]);
|
||||
meta_name_value(ident, str);
|
||||
meta_name_value(ident, lit);
|
||||
}
|
||||
|
||||
type block = spanned[block_];
|
||||
|
|
|
|||
|
|
@ -2172,17 +2172,9 @@ fn parse_meta_item(&parser p) -> @ast::meta_item {
|
|||
alt (p.peek()) {
|
||||
case (token::EQ) {
|
||||
p.bump();
|
||||
alt (p.peek()) {
|
||||
case (token::LIT_STR(?s)) {
|
||||
p.bump();
|
||||
auto value = p.get_str(s);
|
||||
auto hi = p.get_hi_pos();
|
||||
ret @spanned(lo, hi, ast::meta_name_value(ident, value));
|
||||
}
|
||||
case (_) {
|
||||
p.fatal("Metadata items must be string literals");
|
||||
}
|
||||
}
|
||||
auto lit = parse_lit(p);
|
||||
auto hi = p.get_hi_pos();
|
||||
ret @spanned(lo, hi, ast::meta_name_value(ident, lit));
|
||||
}
|
||||
case (token::LPAREN) {
|
||||
auto inner_items = parse_meta_seq(p);
|
||||
|
|
|
|||
|
|
@ -1103,7 +1103,7 @@ fn print_meta_item(&ps s, &@ast::meta_item item) {
|
|||
case (ast::meta_name_value(?name, ?value)) {
|
||||
word_space(s, name);
|
||||
word_space(s, "=");
|
||||
print_string(s, value);
|
||||
print_literal(s, @value);
|
||||
}
|
||||
case (ast::meta_list(?name, ?items)) {
|
||||
word(s.s, name);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue