diff options
| author | Jonas Schievink <jonas.schievink@ferrous-systems.com> | 2022-05-13 15:05:17 +0200 |
|---|---|---|
| committer | Jonas Schievink <jonas.schievink@ferrous-systems.com> | 2022-05-13 15:05:34 +0200 |
| commit | bde036b74edfe20ed879bcef97e61fcde0c0dee6 (patch) | |
| tree | 57bc8cd29fb19ca293cfb8b25a07e2096556e8a8 | |
| parent | 4fcdb96789fbe3434fecc5719a3e325ef84f85f3 (diff) | |
| download | rust-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.rs | 4 | ||||
| -rw-r--r-- | crates/mbe/src/syntax_bridge.rs | 50 |
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; |
