parent
eb3ac29a10
commit
3b71646a60
2 changed files with 3 additions and 20 deletions
|
@ -13,7 +13,7 @@ use ast::Ident;
|
||||||
use errors::{Handler, DiagnosticBuilder};
|
use errors::{Handler, DiagnosticBuilder};
|
||||||
use ext::tt::macro_parser::{NamedMatch, MatchedSeq, MatchedNonterminal};
|
use ext::tt::macro_parser::{NamedMatch, MatchedSeq, MatchedNonterminal};
|
||||||
use parse::token::{DocComment, MatchNt, SubstNt};
|
use parse::token::{DocComment, MatchNt, SubstNt};
|
||||||
use parse::token::{Token, Interpolated, NtIdent, NtTT};
|
use parse::token::{Token, NtIdent};
|
||||||
use parse::token;
|
use parse::token;
|
||||||
use parse::lexer::TokenAndSpan;
|
use parse::lexer::TokenAndSpan;
|
||||||
use syntax_pos::{Span, DUMMY_SP};
|
use syntax_pos::{Span, DUMMY_SP};
|
||||||
|
@ -269,9 +269,9 @@ pub fn tt_next_token(r: &mut TtReader) -> TokenAndSpan {
|
||||||
}
|
}
|
||||||
// FIXME #2887: think about span stuff here
|
// FIXME #2887: think about span stuff here
|
||||||
TokenTree::Token(sp, SubstNt(ident)) => {
|
TokenTree::Token(sp, SubstNt(ident)) => {
|
||||||
|
r.stack.last_mut().unwrap().idx += 1;
|
||||||
match lookup_cur_matched(r, ident) {
|
match lookup_cur_matched(r, ident) {
|
||||||
None => {
|
None => {
|
||||||
r.stack.last_mut().unwrap().idx += 1;
|
|
||||||
r.cur_span = sp;
|
r.cur_span = sp;
|
||||||
r.cur_tok = SubstNt(ident);
|
r.cur_tok = SubstNt(ident);
|
||||||
return ret_val;
|
return ret_val;
|
||||||
|
@ -283,24 +283,14 @@ pub fn tt_next_token(r: &mut TtReader) -> TokenAndSpan {
|
||||||
// (a) idents can be in lots of places, so it'd be a pain
|
// (a) idents can be in lots of places, so it'd be a pain
|
||||||
// (b) we actually can, since it's a token.
|
// (b) we actually can, since it's a token.
|
||||||
NtIdent(ref sn) => {
|
NtIdent(ref sn) => {
|
||||||
r.stack.last_mut().unwrap().idx += 1;
|
|
||||||
r.cur_span = sn.span;
|
r.cur_span = sn.span;
|
||||||
r.cur_tok = token::Ident(sn.node);
|
r.cur_tok = token::Ident(sn.node);
|
||||||
return ret_val;
|
return ret_val;
|
||||||
}
|
}
|
||||||
NtTT(_) => {
|
|
||||||
r.stack.push(TtFrame {
|
|
||||||
forest: TokenTree::Token(sp, Interpolated(nt.clone())),
|
|
||||||
idx: 0,
|
|
||||||
dotdotdoted: false,
|
|
||||||
sep: None,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
_ => {
|
_ => {
|
||||||
r.stack.last_mut().unwrap().idx += 1;
|
|
||||||
// FIXME(pcwalton): Bad copy.
|
// FIXME(pcwalton): Bad copy.
|
||||||
r.cur_span = sp;
|
r.cur_span = sp;
|
||||||
r.cur_tok = Interpolated(nt.clone());
|
r.cur_tok = token::Interpolated(nt.clone());
|
||||||
return ret_val;
|
return ret_val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -195,13 +195,6 @@ impl TokenTree {
|
||||||
TokenTree::Token(sp, token::Ident(kind))];
|
TokenTree::Token(sp, token::Ident(kind))];
|
||||||
v[index].clone()
|
v[index].clone()
|
||||||
}
|
}
|
||||||
(&TokenTree::Token(_, token::Interpolated(ref nt)), _) => {
|
|
||||||
if let Nonterminal::NtTT(ref tt) = **nt {
|
|
||||||
tt.clone()
|
|
||||||
} else {
|
|
||||||
panic!("Cannot expand a token tree");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
(&TokenTree::Sequence(_, ref seq), _) => seq.tts[index].clone(),
|
(&TokenTree::Sequence(_, ref seq), _) => seq.tts[index].clone(),
|
||||||
_ => panic!("Cannot expand a token tree"),
|
_ => panic!("Cannot expand a token tree"),
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue