Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/mbe/src/syntax_bridge.rs')
-rw-r--r--crates/mbe/src/syntax_bridge.rs79
1 files changed, 0 insertions, 79 deletions
diff --git a/crates/mbe/src/syntax_bridge.rs b/crates/mbe/src/syntax_bridge.rs
index 361633e39d..21a0aa4284 100644
--- a/crates/mbe/src/syntax_bridge.rs
+++ b/crates/mbe/src/syntax_bridge.rs
@@ -243,8 +243,6 @@ fn convert_tokens<C: TokenConvertor>(conv: &mut C) -> tt::Subtree {
let char = match token.to_char(conv) {
Some(c) => c,
None => {
- // FIXME: this isn't really correct, `to_char` yields the *first* char of the token,
- // and this is relevant when eg. creating 2 `tt::Punct` from a single `::` token
panic!("Token from lexer must be single char: token = {:#?}", token);
}
};
@@ -262,33 +260,6 @@ fn convert_tokens<C: TokenConvertor>(conv: &mut C) -> tt::Subtree {
IDENT => make_leaf!(Ident),
UNDERSCORE => make_leaf!(Ident),
k if k.is_keyword() => make_leaf!(Ident),
- FLOAT_NUMBER_START_0 | FLOAT_NUMBER_START_1 | FLOAT_NUMBER_START_2 => {
- // Reassemble a split-up float token.
- let mut range = range;
- let mut text = token.to_text(conv).to_string();
- if kind == FLOAT_NUMBER_START_1 || kind == FLOAT_NUMBER_START_2 {
- let (dot, dot_range) = conv.bump().unwrap();
- assert_eq!(dot.kind(conv), DOT);
- text += &*dot.to_text(conv);
- range = TextRange::new(range.start(), dot_range.end());
-
- if kind == FLOAT_NUMBER_START_2 {
- let (tail, tail_range) = conv.bump().unwrap();
- assert_eq!(tail.kind(conv), FLOAT_NUMBER_PART);
- text += &*tail.to_text(conv);
- range = TextRange::new(range.start(), tail_range.end());
- }
- }
-
- result.push(
- tt::Leaf::from(tt::Literal {
- id: conv.id_alloc().alloc(range, synth_id),
- text: text.into(),
- })
- .into(),
- );
- continue;
- }
k if k.is_literal() => make_leaf!(Literal),
LIFETIME_IDENT => {
let char_unit = TextSize::of('\'');
@@ -742,7 +713,6 @@ struct TtTreeSink<'a> {
text_pos: TextSize,
inner: SyntaxTreeBuilder,
token_map: TokenMap,
- remaining_float_lit_text: String,
}
impl<'a> TtTreeSink<'a> {
@@ -754,7 +724,6 @@ impl<'a> TtTreeSink<'a> {
text_pos: 0.into(),
inner: SyntaxTreeBuilder::default(),
token_map: TokenMap::default(),
- remaining_float_lit_text: String::new(),
}
}
@@ -781,54 +750,6 @@ impl<'a> TtTreeSink<'a> {
n_tokens = 2;
}
- // We need to split a float `tt::Literal` into up to 3 tokens consumed by the parser.
- match self.cursor.token_tree() {
- Some(tt::buffer::TokenTreeRef::Subtree(sub, _)) if sub.delimiter.is_none() => {
- self.cursor = self.cursor.subtree().unwrap()
- }
- _ => {}
- }
- let literal = match self.cursor.token_tree() {
- Some(tt::buffer::TokenTreeRef::Leaf(tt::Leaf::Literal(lit), _)) => Some(lit),
- _ => None,
- };
- if matches!(
- kind,
- FLOAT_NUMBER_PART | FLOAT_NUMBER_START_0 | FLOAT_NUMBER_START_1 | FLOAT_NUMBER_START_2
- ) {
- if self.remaining_float_lit_text.is_empty() {
- always!(
- literal.is_some(),
- "kind={:?}, cursor tt={:?}",
- kind,
- self.cursor.token_tree()
- );
- let text = literal.map_or(String::new(), |lit| lit.to_string());
- self.cursor = self.cursor.bump();
- match text.split_once('.') {
- Some((start, end)) => {
- self.inner.token(kind, start);
- self.remaining_float_lit_text = format!(".{end}");
- return;
- }
- None => {
- self.inner.token(kind, &text);
- return;
- }
- }
- } else {
- self.inner.token(kind, &self.remaining_float_lit_text);
- self.remaining_float_lit_text.clear();
- return;
- }
- }
- if kind == DOT && !self.remaining_float_lit_text.is_empty() {
- always!(self.remaining_float_lit_text.chars().next() == Some('.'));
- self.inner.token(kind, ".");
- self.remaining_float_lit_text = self.remaining_float_lit_text[1..].to_string();
- return;
- }
-
let mut last = self.cursor;
for _ in 0..n_tokens {
let tmp: u8;