diff --git a/RustEnhanced.sublime-syntax b/RustEnhanced.sublime-syntax index adc156c8..bcdb0478 100644 --- a/RustEnhanced.sublime-syntax +++ b/RustEnhanced.sublime-syntax @@ -728,6 +728,8 @@ contexts: set: impl-body - match: '(?=\bwhere\b)' push: impl-where + - match: \b(mut|ref)\b + scope: storage.modifier.rust - match: '{{identifier}}(?=<)' scope: entity.name.impl.rust push: generic-angles @@ -735,8 +737,6 @@ contexts: scope: entity.name.impl.rust - match: '&' scope: keyword.operator.rust - - match: \b(mut|ref)\b - scope: storage.modifier.rust - match: '''{{identifier}}(?!\'')\b' scope: storage.modifier.lifetime.rust diff --git a/syntax_test_rust.rs b/syntax_test_rust.rs index 19411025..f261898c 100644 --- a/syntax_test_rust.rs +++ b/syntax_test_rust.rs @@ -1203,3 +1203,11 @@ pub union Foo<'a, Y: Baz> // that we don't accidentally interpret it as a keyword. fn union() {} // ^^^^^ meta.function entity.name.function + +// Ensure that `mut` is a storage modifier. +impl Thing for &'a mut A {} +// ^^^ meta.impl keyword.other +// ^ meta.impl keyword.operator +// ^^ meta.impl storage.modifier.lifetime +// ^^^ meta.impl storage.modifier +// ^ meta.impl entity.name.impl