From 0ca5132e68a59f20758812154a560f5c50401b56 Mon Sep 17 00:00:00 2001 From: Eric Huss Date: Wed, 29 Aug 2018 10:16:59 -0700 Subject: [PATCH] Syntax: Fix tuple access so it doesn't show up as a float. I left the number portion scoped as an integer just as a personal preference, and to keep it symmetric with array access. --- RustEnhanced.sublime-syntax | 24 +++++++++++------------- tests/syntax-rust/syntax_test_expr.rs | 3 +-- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/RustEnhanced.sublime-syntax b/RustEnhanced.sublime-syntax index 4ded3af5..48a64f9c 100644 --- a/RustEnhanced.sublime-syntax +++ b/RustEnhanced.sublime-syntax @@ -13,6 +13,8 @@ variables: escaped_char: '\\([nrt0\"''\\]|x[0-7]\h|u\{(?:\h_*){1,6}\})' int_suffixes: '[iu](?:8|16|32|64|128|size)' float_suffixes: 'f(32|64)' + dec_literal: '[0-9](?:[0-9_])*' + float_exponent: '[eE][+-]?[0-9_]*[0-9][0-9_]*' contexts: main: - include: statements @@ -1174,22 +1176,18 @@ contexts: scope: constant.other.placeholder.rust numbers: - - match: '\b((?:\d[\d_]*)?\.)(\d[\d_]*(?:[eE][+-]?[\d_]+)?)({{float_suffixes}})?' - captures: - 1: constant.numeric.float.rust - 2: constant.numeric.float.rust - 3: storage.type.numeric.rust - - match: '\b(\d[\d_]*\.)(?!\.)' - scope: constant.numeric.float.rust - - match: '\b(\d[\d_]*)({{float_suffixes}})\b' - captures: - 1: constant.numeric.float.rust - 2: storage.type.numeric.rust - - match: '\b(\d[\d_]*(?:\.[\d_]+)?[eE][-+]?[\d_]+)({{float_suffixes}})?\b' + - match: '\b({{dec_literal}}(?:\.{{dec_literal}})?(?:{{float_exponent}})?)({{float_suffixes}})' captures: 1: constant.numeric.float.rust 2: storage.type.numeric.rust - - match: '\b(\d[\d_]*)({{int_suffixes}})?\b' + - match: '\b{{dec_literal}}\.{{dec_literal}}(?:{{float_exponent}})?' + scope: constant.numeric.float.rust + - match: '\b{{dec_literal}}{{float_exponent}}' + scope: constant.numeric.float.rust + - match: '\b{{dec_literal}}\.(?![A-Za-z._''])' + scope: constant.numeric.float.rust + + - match: '\b({{dec_literal}})({{int_suffixes}})?\b' captures: 1: constant.numeric.integer.decimal.rust 2: storage.type.numeric.rust diff --git a/tests/syntax-rust/syntax_test_expr.rs b/tests/syntax-rust/syntax_test_expr.rs index 2ca6bad7..cdebc415 100644 --- a/tests/syntax-rust/syntax_test_expr.rs +++ b/tests/syntax-rust/syntax_test_expr.rs @@ -31,9 +31,8 @@ let tuple = (1.0, 0i32, "Hello"); // ^ punctuation.definition.group.end // Tuple access. -// TODO: Fix this so that tuple access is not `float`. let x = tuple.1; -// ^^ constant.numeric.float +// ^ constant.numeric.integer.decimal.rust // Array access. let x = arr[1];