@@ -41,7 +41,7 @@ pub enum TokenTree {
41
41
/// A single token
42
42
Token ( Span , token:: Token ) ,
43
43
/// A delimited sequence of token trees
44
- Delimited ( DelimSpan , DelimToken , ThinTokenStream ) ,
44
+ Delimited ( DelimSpan , DelimToken , TokenStream ) ,
45
45
}
46
46
47
47
impl TokenTree {
@@ -62,8 +62,7 @@ impl TokenTree {
62
62
( & TokenTree :: Token ( _, ref tk) , & TokenTree :: Token ( _, ref tk2) ) => tk == tk2,
63
63
( & TokenTree :: Delimited ( _, delim, ref tts) ,
64
64
& TokenTree :: Delimited ( _, delim2, ref tts2) ) => {
65
- delim == delim2 &&
66
- tts. stream ( ) . eq_unspanned ( & tts2. stream ( ) )
65
+ delim == delim2 && tts. eq_unspanned ( & tts2)
67
66
}
68
67
( _, _) => false ,
69
68
}
@@ -81,8 +80,7 @@ impl TokenTree {
81
80
}
82
81
( & TokenTree :: Delimited ( _, delim, ref tts) ,
83
82
& TokenTree :: Delimited ( _, delim2, ref tts2) ) => {
84
- delim == delim2 &&
85
- tts. stream ( ) . probably_equal_for_proc_macro ( & tts2. stream ( ) )
83
+ delim == delim2 && tts. probably_equal_for_proc_macro ( & tts2)
86
84
}
87
85
( _, _) => false ,
88
86
}
@@ -492,41 +490,6 @@ impl Cursor {
492
490
}
493
491
}
494
492
495
- /// The `TokenStream` type is large enough to represent a single `TokenTree` without allocation.
496
- /// `ThinTokenStream` is smaller, but needs to allocate to represent a single `TokenTree`.
497
- /// We must use `ThinTokenStream` in `TokenTree::Delimited` to avoid infinite size due to recursion.
498
- #[ derive( Debug , Clone ) ]
499
- pub struct ThinTokenStream ( Option < Lrc < Vec < TreeAndJoint > > > ) ;
500
-
501
- impl ThinTokenStream {
502
- pub fn stream ( & self ) -> TokenStream {
503
- self . clone ( ) . into ( )
504
- }
505
- }
506
-
507
- impl From < TokenStream > for ThinTokenStream {
508
- fn from ( stream : TokenStream ) -> ThinTokenStream {
509
- ThinTokenStream ( match stream {
510
- TokenStream :: Empty => None ,
511
- TokenStream :: Stream ( stream) => Some ( stream) ,
512
- } )
513
- }
514
- }
515
-
516
- impl From < ThinTokenStream > for TokenStream {
517
- fn from ( stream : ThinTokenStream ) -> TokenStream {
518
- stream. 0 . map ( TokenStream :: Stream ) . unwrap_or_else ( TokenStream :: empty)
519
- }
520
- }
521
-
522
- impl Eq for ThinTokenStream { }
523
-
524
- impl PartialEq < ThinTokenStream > for ThinTokenStream {
525
- fn eq ( & self , other : & ThinTokenStream ) -> bool {
526
- TokenStream :: from ( self . clone ( ) ) == TokenStream :: from ( other. clone ( ) )
527
- }
528
- }
529
-
530
493
impl fmt:: Display for TokenStream {
531
494
fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
532
495
f. write_str ( & pprust:: tokens_to_string ( self . clone ( ) ) )
@@ -545,18 +508,6 @@ impl Decodable for TokenStream {
545
508
}
546
509
}
547
510
548
- impl Encodable for ThinTokenStream {
549
- fn encode < E : Encoder > ( & self , encoder : & mut E ) -> Result < ( ) , E :: Error > {
550
- TokenStream :: from ( self . clone ( ) ) . encode ( encoder)
551
- }
552
- }
553
-
554
- impl Decodable for ThinTokenStream {
555
- fn decode < D : Decoder > ( decoder : & mut D ) -> Result < ThinTokenStream , D :: Error > {
556
- TokenStream :: decode ( decoder) . map ( Into :: into)
557
- }
558
- }
559
-
560
511
#[ derive( Debug , Copy , Clone , PartialEq , RustcEncodable , RustcDecodable ) ]
561
512
pub struct DelimSpan {
562
513
pub open : Span ,
0 commit comments