From 9b1e8037cabef5c24ce14ff0f61560c25d7641a4 Mon Sep 17 00:00:00 2001 From: TheIronBorn Date: Fri, 27 Apr 2018 03:25:31 +0000 Subject: [PATCH 1/2] function pattern tests --- syntax_test_rust.rs | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/syntax_test_rust.rs b/syntax_test_rust.rs index 19411025..821c8f7e 100644 --- a/syntax_test_rust.rs +++ b/syntax_test_rust.rs @@ -1203,3 +1203,44 @@ pub union Foo<'a, Y: Baz> // that we don't accidentally interpret it as a keyword. fn union() {} // ^^^^^ meta.function entity.name.function + +fn deconstructor(Foo(a, b): Foo) { +// ^^^ +// ^ meta.function.rust meta.function.parameters.rust punctuation.definition.block.begin.rust +// ^ meta.function.rust meta.function.parameters.rust variable.parameter.rust +// ^ meta.function.rust meta.function.parameters.rust variable.parameter.rust +// ^ meta.function.rust meta.function.parameters.rust punctuation.definition.block.end.rust +// ^ meta.function.rust meta.function.parameters.rust punctuation.separator.rust +// ^^^ meta.function.rust meta.function.parameters.rust storage.type.source.rust + unimplemented!(); +} + +fn deconstructor(Foo{ 0: x, 1: y }: Foo) { +// ^^^ meta.function.rust meta.function.parameters.rust storage.type.source.rust +// ^ meta.function.rust meta.function.parameters.rust punctuation.definition.block.begin.rust +// ^ meta.function.rust meta.function.parameters.rust constant.numeric.integer.decimal.rust +// ^ meta.function.rust meta.function.parameters.rust variable.parameter.rust +// ^ meta.function.rust meta.function.parameters.rust constant.numeric.integer.decimal.rust +// ^ meta.function.rust meta.function.parameters.rust punctuation.separator.rust +// ^ meta.function.rust meta.function.parameters.rust variable.parameter.rust +// ^ meta.function.rust meta.function.parameters.rust punctuation.definition.block.end.rust +// ^ meta.function.rust meta.function.parameters.rust punctuation.separator.rust +// ^^^ meta.function.rust meta.function.parameters.rust storage.type.source.rust + unimplemented!(); +} + +fn deconstructor(Foo{ a, b, c, d: _, .. }: Foo) { +// ^^^ meta.function.rust meta.function.parameters.rust storage.type.source.rust +// ^ meta.function.rust meta.function.parameters.rust punctuation.definition.block.begin.rust +// ^ meta.function.rust meta.function.parameters.rust variable.parameter.rust +// ^ meta.function.rust meta.function.parameters.rust variable.parameter.rust +// ^ meta.function.rust meta.function.parameters.rust variable.parameter.rust +// ^ meta.function.rust meta.function.parameters.rust variable.parameter.rust +// ^ meta.function.rust meta.function.parameters.rust punctuation.separator.rust +// ^^^ meta.function.rust meta.function.parameters.rust +// ^^ meta.function.rust meta.function.parameters.rust keyword.operator.rust +// ^ meta.function.rust meta.function.parameters.rust punctuation.definition.block.end.rust +// ^ meta.function.rust meta.function.parameters.rust punctuation.separator.rust +// ^^^ meta.function.rust meta.function.parameters.rust storage.type.source.rust + unimplemented!(); +} From 220a85241ce84ec968a1d5fd39020553b2b56984 Mon Sep 17 00:00:00 2001 From: TheIronBorn Date: Fri, 27 Apr 2018 03:26:57 +0000 Subject: [PATCH 2/2] function pattern syntax --- RustEnhanced.sublime-syntax | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/RustEnhanced.sublime-syntax b/RustEnhanced.sublime-syntax index adc156c8..6a362720 100644 --- a/RustEnhanced.sublime-syntax +++ b/RustEnhanced.sublime-syntax @@ -800,11 +800,22 @@ contexts: pop: true - match: \bself\b scope: variable.parameter.rust - - match: '({{identifier}})\s*(:(?!:))' - captures: - 1: variable.parameter.rust - 2: punctuation.separator.rust + - include: basic-identifiers + - match: '[\{\(]' + scope: punctuation.definition.block.begin.rust + push: + - match: '[\}\)]' + scope: punctuation.definition.block.end.rust + pop: true + - match: '{{ident}}' + scope: variable.parameter.rust + - include: statements + - include: attribute - include: type-any-identifier + - match: '{{ident}}' + scope: variable.parameter.rust + - match: ':' + scope: punctuation.separator.rust fn-return: - meta_scope: meta.function.rust