From 4fd7ad908b6e7cee0ee7853fcf29fb5a38a19aa2 Mon Sep 17 00:00:00 2001 From: Phil Ellison Date: Sun, 28 Jul 2019 20:47:44 +0100 Subject: Add special case for f32 and f43 suffices on Literal.kind --- crates/ra_syntax/src/ast/expr_extensions.rs | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'crates/ra_syntax/src/ast') diff --git a/crates/ra_syntax/src/ast/expr_extensions.rs b/crates/ra_syntax/src/ast/expr_extensions.rs index f9190d877..745dece98 100644 --- a/crates/ra_syntax/src/ast/expr_extensions.rs +++ b/crates/ra_syntax/src/ast/expr_extensions.rs @@ -239,16 +239,34 @@ impl ast::Literal { pub fn kind(&self) -> LiteralKind { match self.token().kind() { INT_NUMBER => { - let allowed_suffix_list = [ + let int_suffix_list = [ "isize", "i128", "i64", "i32", "i16", "i8", "usize", "u128", "u64", "u32", "u16", "u8", ]; + + // The lexer treats e.g. `1f64` as an integer literal. See + // https://github.com/rust-analyzer/rust-analyzer/issues/1592 + // and the comments on the linked PR. + let float_suffix_list = [ + "f32", "f64" + ]; + let text = self.token().text().to_string(); - let suffix = allowed_suffix_list + + let float_suffix = float_suffix_list .iter() .find(|&s| text.ends_with(s)) .map(|&suf| SmolStr::new(suf)); - LiteralKind::IntNumber { suffix } + + if float_suffix.is_some() { + LiteralKind::FloatNumber { suffix: float_suffix } + } else { + let suffix = int_suffix_list + .iter() + .find(|&s| text.ends_with(s)) + .map(|&suf| SmolStr::new(suf)); + LiteralKind::IntNumber { suffix } + } } FLOAT_NUMBER => { let allowed_suffix_list = ["f64", "f32"]; -- cgit v1.2.3 From fab8e9bb8a2657d397a5d52595a83d428dcbd7b8 Mon Sep 17 00:00:00 2001 From: Phil Ellison Date: Sun, 28 Jul 2019 20:54:37 +0100 Subject: cargo format --- crates/ra_syntax/src/ast/expr_extensions.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'crates/ra_syntax/src/ast') diff --git a/crates/ra_syntax/src/ast/expr_extensions.rs b/crates/ra_syntax/src/ast/expr_extensions.rs index 745dece98..8284f1b25 100644 --- a/crates/ra_syntax/src/ast/expr_extensions.rs +++ b/crates/ra_syntax/src/ast/expr_extensions.rs @@ -247,9 +247,7 @@ impl ast::Literal { // The lexer treats e.g. `1f64` as an integer literal. See // https://github.com/rust-analyzer/rust-analyzer/issues/1592 // and the comments on the linked PR. - let float_suffix_list = [ - "f32", "f64" - ]; + let float_suffix_list = ["f32", "f64"]; let text = self.token().text().to_string(); -- cgit v1.2.3