about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJonas Schievink <jonas.schievink@ferrous-systems.com>2022-05-13 15:05:17 +0200
committerJonas Schievink <jonas.schievink@ferrous-systems.com>2022-05-13 15:05:34 +0200
commitbde036b74edfe20ed879bcef97e61fcde0c0dee6 (patch)
tree57bc8cd29fb19ca293cfb8b25a07e2096556e8a8
parent4fcdb96789fbe3434fecc5719a3e325ef84f85f3 (diff)
downloadrust-bde036b74edfe20ed879bcef97e61fcde0c0dee6.tar.gz
rust-bde036b74edfe20ed879bcef97e61fcde0c0dee6.zip
Revert "Fix conversion of float literals in `TtTreeSink`"
This reverts commit 43a066c5a87972b5e42ad41bab56861661c49b18.
-rw-r--r--crates/hir-def/src/macro_expansion_tests/mbe/tt_conversion.rs4
-rw-r--r--crates/mbe/src/syntax_bridge.rs50
2 files changed, 0 insertions, 54 deletions
diff --git a/crates/hir-def/src/macro_expansion_tests/mbe/tt_conversion.rs b/crates/hir-def/src/macro_expansion_tests/mbe/tt_conversion.rs
index 9e4ab043f6c..73799574d83 100644
--- a/crates/hir-def/src/macro_expansion_tests/mbe/tt_conversion.rs
+++ b/crates/hir-def/src/macro_expansion_tests/mbe/tt_conversion.rs
@@ -183,22 +183,18 @@ fn float_literal_in_tt() {
 macro_rules! constant {
     ($( $ret:expr; )*) => {};
 }
-
 macro_rules! float_const_impl {
     () => ( constant!(0.3; 3.3;); );
 }
-
 float_const_impl! {}
 "#,
         expect![[r#"
 macro_rules! constant {
     ($( $ret:expr; )*) => {};
 }
-
 macro_rules! float_const_impl {
     () => ( constant!(0.3; 3.3;); );
 }
-
 constant!(0.3;
 3.3;
 );
diff --git a/crates/mbe/src/syntax_bridge.rs b/crates/mbe/src/syntax_bridge.rs
index fb6f8d66c6d..83d22af9232 100644
--- a/crates/mbe/src/syntax_bridge.rs
+++ b/crates/mbe/src/syntax_bridge.rs
@@ -740,7 +740,6 @@ struct TtTreeSink<'a> {
     text_pos: TextSize,
     inner: SyntaxTreeBuilder,
     token_map: TokenMap,
-    remaining_float_lit_text: String,
 }
 
 impl<'a> TtTreeSink<'a> {
@@ -752,7 +751,6 @@ impl<'a> TtTreeSink<'a> {
             text_pos: 0.into(),
             inner: SyntaxTreeBuilder::default(),
             token_map: TokenMap::default(),
-            remaining_float_lit_text: String::new(),
         }
     }
 
@@ -779,54 +777,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;