From ce732faa54f1a8252710b753cd125840cf4a754c Mon Sep 17 00:00:00 2001 From: Eric Huss Date: Mon, 21 Jan 2019 15:51:23 -0800 Subject: [PATCH] Support `const` functions. --- RustEnhanced.sublime-syntax | 5 +++++ tests/syntax-rust/syntax_test_functions.rs | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/RustEnhanced.sublime-syntax b/RustEnhanced.sublime-syntax index 53d229c2..27c4687f 100644 --- a/RustEnhanced.sublime-syntax +++ b/RustEnhanced.sublime-syntax @@ -106,6 +106,11 @@ contexts: - include: raw-pointer + # `const` in a function header has a different scope from `const` values. + - match: '\b(const)\s+(?=unsafe|extern|fn)' + captures: + 1: storage.modifier.rust + - match: '\b(const)\s+({{identifier}})' captures: 1: storage.type.rust diff --git a/tests/syntax-rust/syntax_test_functions.rs b/tests/syntax-rust/syntax_test_functions.rs index 9a943cf3..e3421d1e 100644 --- a/tests/syntax-rust/syntax_test_functions.rs +++ b/tests/syntax-rust/syntax_test_functions.rs @@ -106,3 +106,21 @@ fn f(self, // ^ punctuation.section.brackets.end // ^ punctuation.separator {} + +const fn f() {} +// <- storage.modifier +// ^^ meta.function storage.type.function +// ^ meta.function entity.name.function + +const unsafe fn f() {} +// <- storage.modifier +// ^^^^^^ storage.modifier +// ^^ meta.function storage.type.function +// ^ meta.function entity.name.function + +const extern "C" fn f() {} +// <- storage.modifier +// ^^^^^^ keyword.other +// ^^^ string.quoted.double +// ^^ meta.function storage.type.function +// ^ meta.function entity.name.function