name,
source
);
- p.quote_depth += 1us;
+ p.quote_depth += 1;
// right now this is re-creating the token trees from ... token trees.
maybe_aborted(p.parse_all_token_trees(),p)
}
name,
source
);
- p.quote_depth += 1us;
+ p.quote_depth += 1;
// right now this is re-creating the token trees from ... token trees.
maybe_aborted(p.parse_all_token_trees(),p)
}
match suffix {
Some(suf) if looks_like_width_suffix(&['f'], suf) => {
match base {
- 16us => sd.span_err(sp, "hexadecimal float literal is not supported"),
- 8us => sd.span_err(sp, "octal float literal is not supported"),
- 2us => sd.span_err(sp, "binary float literal is not supported"),
+ 16 => sd.span_err(sp, "hexadecimal float literal is not supported"),
+ 8 => sd.span_err(sp, "octal float literal is not supported"),
+ 2 => sd.span_err(sp, "binary float literal is not supported"),
_ => ()
}
let ident = token::intern_and_get_ident(&*s);
use ast;
use abi;
use attr::{first_attr_value_str_by_name, AttrMetaMethods};
+ use parse;
use parse::parser::Parser;
use parse::token::{str_to_ident};
use print::pprust::item_to_string;
let doc = first_attr_value_str_by_name(item.attrs.as_slice(), "doc").unwrap();
assert_eq!(doc.get(), "/** doc comment\n * with CRLF */");
}
+
+ #[test]
+ fn ttdelim_span() {
+ let sess = parse::new_parse_sess();
+ let expr = parse::parse_expr_from_source_str("foo".to_string(),
+ "foo!( fn main() { body } )".to_string(), vec![], &sess);
+
+ let tts = match expr.node {
+ ast::ExprMac(ref mac) => {
+ let ast::MacInvocTT(_, ref tts, _) = mac.node;
+ tts.clone()
+ }
+ _ => panic!("not a macro"),
+ };
+
+ let span = tts.iter().rev().next().unwrap().get_span();
+
+ match sess.span_diagnostic.cm.span_to_snippet(span) {
+ Some(s) => assert_eq!(&s[], "{ body }"),
+ None => panic!("could not get snippet"),
+ }
+ }
}