@@ -14,12 +14,13 @@ use super::proc_macro::{
1414} ;
1515
1616mod token_stream;
17- pub use token_stream:: * ;
17+ pub use token_stream:: TokenStream ;
18+ use token_stream:: TokenStreamBuilder ;
1819
1920mod symbol;
2021pub use symbol:: * ;
2122
22- use std:: iter:: FromIterator ;
23+ use std:: { iter:: FromIterator , ops :: Bound } ;
2324
2425type Group = tt:: Subtree ;
2526type TokenTree = tt:: TokenTree ;
@@ -76,6 +77,13 @@ impl server::FreeFunctions for RustAnalyzer {
7677 // https://github.com/rust-lang/rust/pull/71858
7778 }
7879 fn track_path ( & mut self , _path : & str ) { }
80+
81+ fn literal_from_str (
82+ & mut self ,
83+ _s : & str ,
84+ ) -> Result < bridge:: Literal < Self :: Span , Self :: Symbol > , ( ) > {
85+ todo ! ( )
86+ }
7987}
8088
8189impl server:: TokenStream for RustAnalyzer {
@@ -92,7 +100,7 @@ impl server::TokenStream for RustAnalyzer {
92100 }
93101 fn from_token_tree (
94102 & mut self ,
95- tree : bridge:: TokenTree < Self :: TokenStream , Self :: Span , Self :: Ident , Self :: Literal > ,
103+ tree : bridge:: TokenTree < Self :: TokenStream , Self :: Span , Self :: Symbol > ,
96104 ) -> Self :: TokenStream {
97105 match tree {
98106 bridge:: TokenTree :: Group ( group) => {
@@ -107,19 +115,20 @@ impl server::TokenStream for RustAnalyzer {
107115 Self :: TokenStream :: from_iter ( vec ! [ tree] )
108116 }
109117
110- bridge:: TokenTree :: Ident ( symbol ) => {
111- todo ! ( "implement " ) ;
118+ bridge:: TokenTree :: Ident ( _symbol ) => {
119+ todo ! ( "convert Ident bridge=>TokenStream " ) ;
112120 // let IdentData(ident) = self.ident_interner.get(index).clone();
113121 // let ident: tt::Ident = ident;
114122 // let leaf = tt::Leaf::from(ident);
115123 // let tree = TokenTree::from(leaf);
116124 // Self::TokenStream::from_iter(vec![tree])
117125 }
118126
119- bridge:: TokenTree :: Literal ( literal) => {
120- let leaf = tt:: Leaf :: from ( literal) ;
121- let tree = TokenTree :: from ( leaf) ;
122- Self :: TokenStream :: from_iter ( vec ! [ tree] )
127+ bridge:: TokenTree :: Literal ( _literal) => {
128+ todo ! ( "convert Literal bridge=>TokenStream" ) ;
129+ // let leaf = tt::Leaf::from(literal);
130+ // let tree = TokenTree::from(leaf);
131+ // Self::TokenStream::from_iter(vec![tree])
123132 }
124133
125134 bridge:: TokenTree :: Punct ( p) => {
@@ -142,7 +151,7 @@ impl server::TokenStream for RustAnalyzer {
142151 fn concat_trees (
143152 & mut self ,
144153 base : Option < Self :: TokenStream > ,
145- trees : Vec < bridge:: TokenTree < Self :: TokenStream , Self :: Span , Self :: Ident , Self :: Literal > > ,
154+ trees : Vec < bridge:: TokenTree < Self :: TokenStream , Self :: Span , Self :: Symbol > > ,
146155 ) -> Self :: TokenStream {
147156 let mut builder = TokenStreamBuilder :: new ( ) ;
148157 if let Some ( base) = base {
@@ -172,15 +181,18 @@ impl server::TokenStream for RustAnalyzer {
172181 fn into_trees (
173182 & mut self ,
174183 stream : Self :: TokenStream ,
175- ) -> Vec < bridge:: TokenTree < Self :: TokenStream , Self :: Span , Self :: Ident , Self :: Literal > > {
184+ ) -> Vec < bridge:: TokenTree < Self :: TokenStream , Self :: Span , Self :: Symbol > > {
176185 stream
177186 . into_iter ( )
178187 . map ( |tree| match tree {
179- tt:: TokenTree :: Leaf ( tt:: Leaf :: Ident ( ident ) ) => {
180- todo ! ( "implement " ) ;
188+ tt:: TokenTree :: Leaf ( tt:: Leaf :: Ident ( _ident ) ) => {
189+ todo ! ( "convert Ident tt=>bridge " ) ;
181190 // bridge::TokenTree::Ident(Symbol(self.ident_interner.intern(&IdentData(ident))))
182191 }
183- tt:: TokenTree :: Leaf ( tt:: Leaf :: Literal ( lit) ) => bridge:: TokenTree :: Literal ( lit) ,
192+ tt:: TokenTree :: Leaf ( tt:: Leaf :: Literal ( _lit) ) => {
193+ todo ! ( "convert Literal tt=>bridge" ) ;
194+ // bridge::TokenTree::Literal(lit)
195+ }
184196 tt:: TokenTree :: Leaf ( tt:: Leaf :: Punct ( punct) ) => {
185197 bridge:: TokenTree :: Punct ( bridge:: Punct {
186198 ch : punct. char as u8 ,
@@ -317,6 +329,15 @@ impl server::Span for RustAnalyzer {
317329 // Just return the first span again, because some macros will unwrap the result.
318330 Some ( first)
319331 }
332+ fn subspan (
333+ & mut self ,
334+ span : Self :: Span ,
335+ _start : Bound < usize > ,
336+ _end : Bound < usize > ,
337+ ) -> Option < Self :: Span > {
338+ // Just return the span again, because some macros will unwrap the result.
339+ Some ( span)
340+ }
320341 fn resolved_at ( & mut self , _span : Self :: Span , _at : Self :: Span ) -> Self :: Span {
321342 // FIXME handle span
322343 tt:: TokenId :: unspecified ( )
@@ -343,6 +364,12 @@ impl server::MultiSpan for RustAnalyzer {
343364 }
344365}
345366
367+ impl server:: Symbol for RustAnalyzer {
368+ fn normalize_and_validate_ident ( & mut self , _string : & str ) -> Result < Self :: Symbol , ( ) > {
369+ todo ! ( )
370+ }
371+ }
372+
346373impl server:: Server for RustAnalyzer {
347374 fn globals ( & mut self ) -> bridge:: ExpnGlobals < Self :: Span > {
348375 bridge:: ExpnGlobals {
@@ -351,6 +378,14 @@ impl server::Server for RustAnalyzer {
351378 mixed_site : Span :: unspecified ( ) ,
352379 }
353380 }
381+
382+ fn intern_symbol ( _ident : & str ) -> Self :: Symbol {
383+ todo ! ( "intern_symbol" )
384+ }
385+
386+ fn with_symbol_string ( _symbol : & Self :: Symbol , _f : impl FnOnce ( & str ) ) {
387+ todo ! ( "with_symbol_string" )
388+ }
354389}
355390
356391#[ cfg( test) ]
0 commit comments