|
34 | 34 | //! as we don't have bincode in Cargo.toml yet, lets stick with serde_json for |
35 | 35 | //! the time being. |
36 | 36 |
|
| 37 | +#[cfg(feature = "sysroot-abi")] |
| 38 | +use proc_macro_srv::TokenStream; |
| 39 | + |
37 | 40 | use std::collections::VecDeque; |
38 | 41 |
|
39 | 42 | use intern::Symbol; |
40 | | -use proc_macro_srv::TokenStream; |
41 | 43 | use rustc_hash::FxHashMap; |
42 | 44 | use serde_derive::{Deserialize, Serialize}; |
43 | 45 | use span::{EditionedFileId, ErasedFileAstId, Span, SpanAnchor, SyntaxContext, TextRange}; |
@@ -162,6 +164,39 @@ impl FlatTree { |
162 | 164 | } |
163 | 165 | } |
164 | 166 |
|
| 167 | + pub fn to_subtree_resolved( |
| 168 | + self, |
| 169 | + version: u32, |
| 170 | + span_data_table: &SpanDataIndexMap, |
| 171 | + ) -> tt::TopSubtree<Span> { |
| 172 | + Reader::<Span> { |
| 173 | + subtree: if version >= ENCODE_CLOSE_SPAN_VERSION { |
| 174 | + read_vec(self.subtree, SubtreeRepr::read_with_close_span) |
| 175 | + } else { |
| 176 | + read_vec(self.subtree, SubtreeRepr::read) |
| 177 | + }, |
| 178 | + literal: if version >= EXTENDED_LEAF_DATA { |
| 179 | + read_vec(self.literal, LiteralRepr::read_with_kind) |
| 180 | + } else { |
| 181 | + read_vec(self.literal, LiteralRepr::read) |
| 182 | + }, |
| 183 | + punct: read_vec(self.punct, PunctRepr::read), |
| 184 | + ident: if version >= EXTENDED_LEAF_DATA { |
| 185 | + read_vec(self.ident, IdentRepr::read_with_rawness) |
| 186 | + } else { |
| 187 | + read_vec(self.ident, IdentRepr::read) |
| 188 | + }, |
| 189 | + token_tree: self.token_tree, |
| 190 | + text: self.text, |
| 191 | + span_data_table, |
| 192 | + version, |
| 193 | + } |
| 194 | + .read_subtree() |
| 195 | + } |
| 196 | +} |
| 197 | + |
| 198 | +#[cfg(feature = "sysroot-abi")] |
| 199 | +impl FlatTree { |
165 | 200 | pub fn from_tokenstream( |
166 | 201 | tokenstream: proc_macro_srv::TokenStream<Span>, |
167 | 202 | version: u32, |
@@ -265,37 +300,6 @@ impl FlatTree { |
265 | 300 | } |
266 | 301 | } |
267 | 302 |
|
268 | | - pub fn to_subtree_resolved( |
269 | | - self, |
270 | | - version: u32, |
271 | | - span_data_table: &SpanDataIndexMap, |
272 | | - ) -> tt::TopSubtree<Span> { |
273 | | - Reader::<Span> { |
274 | | - subtree: if version >= ENCODE_CLOSE_SPAN_VERSION { |
275 | | - read_vec(self.subtree, SubtreeRepr::read_with_close_span) |
276 | | - } else { |
277 | | - read_vec(self.subtree, SubtreeRepr::read) |
278 | | - }, |
279 | | - literal: if version >= EXTENDED_LEAF_DATA { |
280 | | - read_vec(self.literal, LiteralRepr::read_with_kind) |
281 | | - } else { |
282 | | - read_vec(self.literal, LiteralRepr::read) |
283 | | - }, |
284 | | - punct: read_vec(self.punct, PunctRepr::read), |
285 | | - ident: if version >= EXTENDED_LEAF_DATA { |
286 | | - read_vec(self.ident, IdentRepr::read_with_rawness) |
287 | | - } else { |
288 | | - read_vec(self.ident, IdentRepr::read) |
289 | | - }, |
290 | | - token_tree: self.token_tree, |
291 | | - text: self.text, |
292 | | - span_data_table, |
293 | | - version, |
294 | | - } |
295 | | - .read_subtree() |
296 | | - } |
297 | | -} |
298 | | -impl FlatTree { |
299 | 303 | pub fn to_tokenstream_unresolved<T: SpanTransformer<Table = ()>>( |
300 | 304 | self, |
301 | 305 | version: u32, |
@@ -836,6 +840,7 @@ impl<T: SpanTransformer> Reader<'_, T> { |
836 | 840 | } |
837 | 841 | } |
838 | 842 |
|
| 843 | +#[cfg(feature = "sysroot-abi")] |
839 | 844 | impl<T: SpanTransformer> Reader<'_, T> { |
840 | 845 | pub(crate) fn read_tokenstream(self) -> proc_macro_srv::TokenStream<T::Span> { |
841 | 846 | let mut res: Vec<Option<proc_macro_srv::Group<T::Span>>> = vec![None; self.subtree.len()]; |
|
0 commit comments