Skip to content

Commit 9cd80a6

Browse files
committed
Fix build on today's nightly
1 parent dfd23e4 commit 9cd80a6

File tree

1 file changed

+36
-44
lines changed

1 file changed

+36
-44
lines changed

src/unstable.rs

Lines changed: 36 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -51,40 +51,39 @@ impl From<TokenStream> for proc_macro::TokenStream {
5151

5252
impl From<TokenTree> for TokenStream {
5353
fn from(token: TokenTree) -> TokenStream {
54-
let (span, kind) = match token {
54+
let tt: proc_macro::TokenTree = match token {
5555
TokenTree::Group(tt) => {
5656
let delim = match tt.delimiter() {
5757
Delimiter::Parenthesis => proc_macro::Delimiter::Parenthesis,
5858
Delimiter::Bracket => proc_macro::Delimiter::Bracket,
5959
Delimiter::Brace => proc_macro::Delimiter::Brace,
6060
Delimiter::None => proc_macro::Delimiter::None,
6161
};
62-
let span = tt.span().inner;
63-
let group = proc_macro::TokenNode::Group(delim, tt.stream.inner.0);
64-
(span, group)
62+
let span = tt.span();
63+
let mut group = proc_macro::Group::new(delim, tt.stream.inner.0);
64+
group.set_span(span.inner.0);
65+
group.into()
6566
}
6667
TokenTree::Op(tt) => {
67-
let kind = match tt.spacing() {
68+
let spacing = match tt.spacing() {
6869
Spacing::Joint => proc_macro::Spacing::Joint,
6970
Spacing::Alone => proc_macro::Spacing::Alone,
7071
};
71-
(tt.span().inner, proc_macro::TokenNode::Op(tt.op(), kind))
72+
let mut op = proc_macro::Op::new(tt.op(), spacing);
73+
op.set_span(tt.span().inner.0);
74+
op.into()
7275
}
73-
TokenTree::Term(tt) => (tt.inner.span, proc_macro::TokenNode::Term(tt.inner.term)),
74-
TokenTree::Literal(tt) => (tt.inner.span, proc_macro::TokenNode::Literal(tt.inner.lit)),
76+
TokenTree::Term(tt) => tt.inner.term.into(),
77+
TokenTree::Literal(tt) => tt.inner.lit.into(),
7578
};
76-
TokenStream(
77-
proc_macro::TokenTree {
78-
span: span.0,
79-
kind,
80-
}.into(),
81-
)
79+
TokenStream(tt.into())
8280
}
8381
}
8482

8583
impl iter::FromIterator<TokenTree> for TokenStream {
8684
fn from_iter<I: IntoIterator<Item = TokenTree>>(streams: I) -> Self {
87-
let streams = streams.into_iter().map(TokenStream::from);
85+
let streams = streams.into_iter().map(TokenStream::from)
86+
.flat_map(|t| t.0);
8887
TokenStream(streams.collect::<proc_macro::TokenStream>())
8988
}
9089
}
@@ -101,7 +100,7 @@ impl fmt::Debug for LexError {
101100
}
102101
}
103102

104-
pub struct TokenTreeIter(proc_macro::TokenTreeIter);
103+
pub struct TokenTreeIter(proc_macro::token_stream::IntoIter);
105104

106105
impl IntoIterator for TokenStream {
107106
type Item = TokenTree;
@@ -117,39 +116,36 @@ impl Iterator for TokenTreeIter {
117116

118117
fn next(&mut self) -> Option<TokenTree> {
119118
let token = self.0.next()?;
120-
let span = ::Span::_new(Span(token.span));
121-
Some(match token.kind {
122-
proc_macro::TokenNode::Group(delim, s) => {
123-
let delim = match delim {
119+
Some(match token {
120+
proc_macro::TokenTree::Group(tt) => {
121+
let delim = match tt.delimiter() {
124122
proc_macro::Delimiter::Parenthesis => Delimiter::Parenthesis,
125123
proc_macro::Delimiter::Bracket => Delimiter::Bracket,
126124
proc_macro::Delimiter::Brace => Delimiter::Brace,
127125
proc_macro::Delimiter::None => Delimiter::None,
128126
};
129-
let stream = ::TokenStream::_new(TokenStream(s));
127+
let stream = ::TokenStream::_new(TokenStream(tt.stream()));
130128
let mut g = Group::new(delim, stream);
131-
g.set_span(span);
129+
g.set_span(::Span::_new(Span(tt.span())));
132130
g.into()
133131
}
134-
proc_macro::TokenNode::Op(ch, kind) => {
135-
let kind = match kind {
132+
proc_macro::TokenTree::Op(tt) => {
133+
let spacing = match tt.spacing() {
136134
proc_macro::Spacing::Joint => Spacing::Joint,
137135
proc_macro::Spacing::Alone => Spacing::Alone,
138136
};
139-
let mut o = Op::new(ch, kind);
140-
o.span = span;
137+
let mut o = Op::new(tt.op(), spacing);
138+
o.set_span(::Span::_new(Span(tt.span())));
141139
o.into()
142140
}
143-
proc_macro::TokenNode::Term(s) => {
141+
proc_macro::TokenTree::Term(s) => {
144142
::Term::_new(Term {
145143
term: s,
146-
span: span.inner,
147144
}).into()
148145
}
149-
proc_macro::TokenNode::Literal(l) => {
146+
proc_macro::TokenTree::Literal(l) => {
150147
::Literal::_new(Literal {
151148
lit: l,
152-
span: span.inner,
153149
}).into()
154150
}
155151
})
@@ -213,7 +209,7 @@ pub struct LineColumn {
213209
pub column: usize,
214210
}
215211

216-
#[derive(Copy, Clone, PartialEq, Eq)]
212+
#[derive(Copy, Clone)]
217213
pub struct Span(proc_macro::Span);
218214

219215
impl From<proc_macro::Span> for ::Span {
@@ -271,14 +267,12 @@ impl fmt::Debug for Span {
271267
#[derive(Copy, Clone)]
272268
pub struct Term {
273269
term: proc_macro::Term,
274-
span: Span,
275270
}
276271

277272
impl Term {
278273
pub fn new(string: &str, span: Span) -> Term {
279274
Term {
280-
term: proc_macro::Term::intern(string),
281-
span,
275+
term: proc_macro::Term::new(string, span.0),
282276
}
283277
}
284278

@@ -287,11 +281,11 @@ impl Term {
287281
}
288282

289283
pub fn span(&self) -> Span {
290-
self.span
284+
Span(self.term.span())
291285
}
292286

293287
pub fn set_span(&mut self, span: Span) {
294-
self.span = span;
288+
self.term.set_span(span.0);
295289
}
296290
}
297291

@@ -304,21 +298,20 @@ impl fmt::Debug for Term {
304298
#[derive(Clone)]
305299
pub struct Literal {
306300
lit: proc_macro::Literal,
307-
span: Span,
308301
}
309302

310303
macro_rules! suffixed_numbers {
311304
($($name:ident => $kind:ident,)*) => ($(
312305
pub fn $name(n: $kind) -> Literal {
313-
Literal::_new(proc_macro::Literal::$kind(n))
306+
Literal::_new(proc_macro::Literal::$name(n))
314307
}
315308
)*)
316309
}
317310

318311
macro_rules! unsuffixed_integers {
319312
($($name:ident => $kind:ident,)*) => ($(
320313
pub fn $name(n: $kind) -> Literal {
321-
Literal::_new(proc_macro::Literal::integer(n as i128))
314+
Literal::_new(proc_macro::Literal::$name(n))
322315
}
323316
)*)
324317
}
@@ -327,7 +320,6 @@ impl Literal {
327320
fn _new(lit: proc_macro::Literal) -> Literal {
328321
Literal {
329322
lit,
330-
span: Span::call_site(),
331323
}
332324
}
333325

@@ -361,11 +353,11 @@ impl Literal {
361353
}
362354

363355
pub fn f32_unsuffixed(f: f32) -> Literal {
364-
Literal::f64_unsuffixed(f.into())
356+
Literal::_new(proc_macro::Literal::f32_unsuffixed(f))
365357
}
366358

367359
pub fn f64_unsuffixed(f: f64) -> Literal {
368-
Literal::_new(proc_macro::Literal::float(f))
360+
Literal::_new(proc_macro::Literal::f64_unsuffixed(f))
369361
}
370362

371363

@@ -382,11 +374,11 @@ impl Literal {
382374
}
383375

384376
pub fn span(&self) -> Span {
385-
self.span
377+
Span(self.lit.span())
386378
}
387379

388380
pub fn set_span(&mut self, span: Span) {
389-
self.span = span;
381+
self.lit.set_span(span.0);
390382
}
391383
}
392384

0 commit comments

Comments
 (0)