1
1
//! Conversions between [`SyntaxNode`] and [`tt::TokenTree`].
2
2
3
3
use rustc_hash:: { FxHashMap , FxHashSet } ;
4
- use stdx:: { never , non_empty_vec:: NonEmptyVec } ;
4
+ use stdx:: non_empty_vec:: NonEmptyVec ;
5
5
use syntax:: {
6
6
ast:: { self , make:: tokens:: doc_comment} ,
7
7
AstToken , Parse , PreorderWithTokens , SmolStr , SyntaxElement , SyntaxKind ,
@@ -66,10 +66,6 @@ pub fn token_tree_to_syntax_node(
66
66
parser:: Step :: Error { msg } => tree_sink. error ( msg. to_string ( ) ) ,
67
67
}
68
68
}
69
- if never ! ( tree_sink. roots. len( ) != 1 ) {
70
- return Err ( ExpandError :: ConversionError ) ;
71
- }
72
- //FIXME: would be cool to report errors
73
69
let ( parse, range_map) = tree_sink. finish ( ) ;
74
70
Ok ( ( parse, range_map) )
75
71
}
@@ -614,10 +610,6 @@ struct TtTreeSink<'a> {
614
610
text_pos : TextSize ,
615
611
inner : SyntaxTreeBuilder ,
616
612
token_map : TokenMap ,
617
-
618
- // Number of roots
619
- // Use for detect ill-form tree which is not single root
620
- roots : smallvec:: SmallVec < [ usize ; 1 ] > ,
621
613
}
622
614
623
615
impl < ' a > TtTreeSink < ' a > {
@@ -628,7 +620,6 @@ impl<'a> TtTreeSink<'a> {
628
620
open_delims : FxHashMap :: default ( ) ,
629
621
text_pos : 0 . into ( ) ,
630
622
inner : SyntaxTreeBuilder :: default ( ) ,
631
- roots : smallvec:: SmallVec :: new ( ) ,
632
623
token_map : TokenMap :: default ( ) ,
633
624
}
634
625
}
@@ -733,16 +724,10 @@ impl<'a> TtTreeSink<'a> {
733
724
734
725
fn start_node ( & mut self , kind : SyntaxKind ) {
735
726
self . inner . start_node ( kind) ;
736
-
737
- match self . roots . last_mut ( ) {
738
- None | Some ( 0 ) => self . roots . push ( 1 ) ,
739
- Some ( n) => * n += 1 ,
740
- } ;
741
727
}
742
728
743
729
fn finish_node ( & mut self ) {
744
730
self . inner . finish_node ( ) ;
745
- * self . roots . last_mut ( ) . unwrap ( ) -= 1 ;
746
731
}
747
732
748
733
fn error ( & mut self , error : String ) {
0 commit comments