Generated code spans now point to callsite parameters (where applicable)
This commit is contained in:
@@ -79,8 +79,8 @@ pub use self::ParseResult::*;
|
||||
use self::TokenTreeOrTokenTreeVec::*;
|
||||
|
||||
use ast;
|
||||
use ast::{TokenTree, Name};
|
||||
use codemap::{BytePos, mk_sp, Span};
|
||||
use ast::{TokenTree, Name, Ident};
|
||||
use codemap::{BytePos, mk_sp, Span, Spanned};
|
||||
use codemap;
|
||||
use parse::lexer::*; //resolve bug?
|
||||
use parse::ParseSess;
|
||||
@@ -526,7 +526,10 @@ pub fn parse_nt(p: &mut Parser, sp: Span, name: &str) -> Nonterminal {
|
||||
"ty" => token::NtTy(panictry!(p.parse_ty())),
|
||||
// this could be handled like a token, since it is one
|
||||
"ident" => match p.token {
|
||||
token::Ident(sn,b) => { panictry!(p.bump()); token::NtIdent(Box::new(sn),b) }
|
||||
token::Ident(sn,b) => {
|
||||
panictry!(p.bump());
|
||||
token::NtIdent(Box::new(Spanned::<Ident>{node: sn, span: p.span}),b)
|
||||
}
|
||||
_ => {
|
||||
let token_str = pprust::token_to_string(&p.token);
|
||||
panic!(p.fatal(&format!("expected ident, found {}",
|
||||
|
||||
@@ -293,8 +293,8 @@ pub fn tt_next_token(r: &mut TtReader) -> TokenAndSpan {
|
||||
// (a) idents can be in lots of places, so it'd be a pain
|
||||
// (b) we actually can, since it's a token.
|
||||
MatchedNonterminal(NtIdent(ref sn, b)) => {
|
||||
r.cur_span = sp;
|
||||
r.cur_tok = token::Ident(**sn, b);
|
||||
r.cur_span = sn.span;
|
||||
r.cur_tok = token::Ident(sn.node, b);
|
||||
return ret_val;
|
||||
}
|
||||
MatchedNonterminal(ref other_whole_nt) => {
|
||||
|
||||
@@ -663,7 +663,8 @@ pub fn noop_fold_interpolated<T: Folder>(nt: token::Nonterminal, fld: &mut T)
|
||||
token::NtExpr(expr) => token::NtExpr(fld.fold_expr(expr)),
|
||||
token::NtTy(ty) => token::NtTy(fld.fold_ty(ty)),
|
||||
token::NtIdent(id, is_mod_name) =>
|
||||
token::NtIdent(Box::new(fld.fold_ident(*id)), is_mod_name),
|
||||
token::NtIdent(Box::new(Spanned::<Ident>{node: fld.fold_ident(id.node), .. *id}),
|
||||
is_mod_name),
|
||||
token::NtMeta(meta_item) => token::NtMeta(fld.fold_meta_item(meta_item)),
|
||||
token::NtPath(path) => token::NtPath(Box::new(fld.fold_path(*path))),
|
||||
token::NtTT(tt) => token::NtTT(P(fld.fold_tt(&tt))),
|
||||
|
||||
@@ -377,7 +377,7 @@ pub enum Nonterminal {
|
||||
NtPat(P<ast::Pat>),
|
||||
NtExpr(P<ast::Expr>),
|
||||
NtTy(P<ast::Ty>),
|
||||
NtIdent(Box<ast::Ident>, IdentStyle),
|
||||
NtIdent(Box<ast::SpannedIdent>, IdentStyle),
|
||||
/// Stuff inside brackets for attributes
|
||||
NtMeta(P<ast::MetaItem>),
|
||||
NtPath(Box<ast::Path>),
|
||||
|
||||
@@ -296,7 +296,7 @@ pub fn token_to_string(tok: &Token) -> String {
|
||||
token::NtBlock(ref e) => block_to_string(&**e),
|
||||
token::NtStmt(ref e) => stmt_to_string(&**e),
|
||||
token::NtPat(ref e) => pat_to_string(&**e),
|
||||
token::NtIdent(ref e, _) => ident_to_string(**e),
|
||||
token::NtIdent(ref e, _) => ident_to_string(e.node),
|
||||
token::NtTT(ref e) => tt_to_string(&**e),
|
||||
token::NtArm(ref e) => arm_to_string(&*e),
|
||||
token::NtImplItem(ref e) => impl_item_to_string(&**e),
|
||||
|
||||
Reference in New Issue
Block a user