Skip to content

Commit 191db9f

Browse files
stub missing APIs
1 parent 00bc060 commit 191db9f

File tree

3 files changed

+56
-25
lines changed

3 files changed

+56
-25
lines changed

crates/proc-macro-srv/src/abis/abi_sysroot/ra_server.rs

Lines changed: 49 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,13 @@ use super::proc_macro::{
1414
};
1515

1616
mod token_stream;
17-
pub use token_stream::*;
17+
pub use token_stream::TokenStream;
18+
use token_stream::TokenStreamBuilder;
1819

1920
mod symbol;
2021
pub use symbol::*;
2122

22-
use std::iter::FromIterator;
23+
use std::{iter::FromIterator, ops::Bound};
2324

2425
type Group = tt::Subtree;
2526
type 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

8189
impl 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+
346373
impl 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)]

crates/proc-macro-srv/src/abis/abi_sysroot/ra_server/symbol.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,14 @@ struct IdentInterner {
1414
impl IdentInterner {
1515
fn intern(&mut self, data: &str) -> Symbol {
1616
if let Some(index) = self.idents.get(data) {
17-
return *index;
17+
return Symbol(*index);
1818
}
1919

2020
let index = self.idents.len() as u32;
21+
let data = SmolStr::from(data);
2122
self.ident_data.push(data.clone());
22-
self.idents.insert(data.clone(), index);
23-
index
23+
self.idents.insert(data, index);
24+
Symbol(index)
2425
}
2526

2627
fn get(&self, index: u32) -> &SmolStr {

crates/proc-macro-srv/src/abis/abi_sysroot/ra_server/token_stream.rs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -163,20 +163,15 @@ pub mod token_stream {
163163
}
164164

165165
impl TokenStreamBuilder {
166-
fn new() -> TokenStreamBuilder {
166+
pub(super) fn new() -> TokenStreamBuilder {
167167
TokenStreamBuilder { acc: TokenStream::new() }
168168
}
169169

170-
fn push(&mut self, stream: TokenStream) {
170+
pub(super) fn push(&mut self, stream: TokenStream) {
171171
self.acc.extend(stream.into_iter())
172172
}
173173

174-
fn build(self) -> TokenStream {
174+
pub(super) fn build(self) -> TokenStream {
175175
self.acc
176176
}
177177
}
178-
179-
#[derive(Clone)]
180-
pub struct TokenStreamIter {
181-
trees: std::vec::IntoIter<TokenTree>,
182-
}

0 commit comments

Comments
 (0)