On 26 Apr 2014, at 10:10, Johannes Sixt <[email protected]> wrote:
> Am 26.04.2014 01:25, schrieb Marius Ungureanu:
>> New keywords: foreach, break, in, try, finally, as, is, typeof, var,
>> default, fixed, checked, unchecked, this, lock, readonly, unsafe,
>> ref, out, base, null, delegate, continue.
>>
>> Removed keywords: instanceof. It's only in Java.
>> Moved keywords to happen before modifier parsing, as matching a keyword
>> will stop modifiers from being matched.
>>
>> Added method modifiers: extern, abstract.
>>
>> Added properties modifiers: abstract.
>>
>> Added parsing of events and delegates, which are like properties, but
>> take an extra keyword.
>>
>> The reasoning behind adding unsafe to keywords is being also a
>> statement that can happen inline in code to mention blocks which are
>> unsafe. Also, delegates are not necessarily declared in class bodies,
>> but can also happen inline in other functions.
>>
>> Keywords are based on MSDN docs.
>>
>> Signed-off-by: Marius Ungureanu <[email protected]>
>
> Thanks for your contribution.
>
> Please write the commit message in imperative mood, and use full
> sentences, not just fragments and avoid contractions ("it's"). Also,
> don't capitalize the subject line and drop the full-stop:
>
> update C# userdiff patterns
>
> Add new keywords: foreach, break, ...
>
> Remove keyword instanceof because it is only in Java. …
>
Hey!
I’ll fix the commit message and description.
> BTW, it is now dead easy to add test cases for userdiff patterns. Just
> drop files with content like this into t/t4018:
>
> ---- t/t4018/csharp-ignore-statement-keywords -----
> class Foo {
> public int RIGHT()
> {
> if (x)
> else
> try
> catch (y)
> ...
>
> ChangeMe;
> }
> }
> ————————————————————
>
Great, I’ll make another commit with adding unit tests. Thanks!
> (This I just invented, I don't do C#.) See the README file in that
> directory.
>
>> ---
>> userdiff.c | 12 ++++++------
>> 1 file changed, 6 insertions(+), 6 deletions(-)
>>
>> diff --git a/userdiff.c b/userdiff.c
>> index fad52d6..7612c5d 100644
>> --- a/userdiff.c
>> +++ b/userdiff.c
>> @@ -133,14 +133,14 @@ PATTERNS("cpp",
>> "|[-+0-9.e]+[fFlL]?|0[xXbB]?[0-9a-fA-F]+[lLuU]*"
>> "|[-+*/<>%&^|=!]=|--|\\+\\+|<<=?|>>=?|&&|\\|\\||::|->\\*?|\\.\\*"),
>> PATTERNS("csharp",
>> - /* Keywords */
>> - "!^[
>> \t]*(do|while|for|if|else|instanceof|new|return|switch|case|throw|catch|using)\n"
>> /* Methods and constructors */
>> - "^[
>> \t]*(((static|public|internal|private|protected|new|virtual|sealed|override|unsafe)[
>> \t]+)*[][<>@.~_[:alnum:]]+[ \t]+[<>@._[:alnum:]]+[ \t]*\\(.*\\))[ \t]*$\n"
>> - /* Properties */
>> - "^[
>> \t]*(((static|public|internal|private|protected|new|virtual|sealed|override|unsafe)[
>> \t]+)*[][<>@.~_[:alnum:]]+[ \t]+[@._[:alnum:]]+)[ \t]*$\n"
>> + "^[
>> \t]*(((abstract|extern|internal|new|override|private|protected|public|sealed|static|unsafe|virtual)[
>> \t]+)*[][<>@.~_[:alnum:]]+[ \t]+[<>@._[:alnum:]]+[ \t]*\\(.*\\))[ \t]*$\n"
>> + /* Properties, events, delegates */
>> + "^[
>> \t]*(((abstract|internal|new|override|private|protected|public|sealed|static|unsafe|virtual)[
>> \t]+)*((delegate|event)[ \t]+)*[][<>@.~_[:alnum:]]+[ \t]+[@._[:alnum:]]+)[
>> \t]*$\n"
>> /* Type definitions */
>> - "^[
>> \t]*(((static|public|internal|private|protected|new|unsafe|sealed|abstract|partial)[
>> \t]+)*(class|enum|interface|struct)[ \t]+.*)$\n"
>> + "^[
>> \t]*(((abstract|internal|new|override|partial|private|protected|public|sealed|static|unsafe)[
>> \t]+)*(class|enum|interface|struct)[ \t]+.*)$\n"
>> + /* Keywords */
>> + "!^[
>> \t]*(as|base|break|case|catch|checked|continue|default|delegate|do|else|finally|fixed|for|foreach|if|in|is|lock|new|null|out|readonly|ref|return|switch|this|throw|try|typeof|unchecked|unsafe|using|var|while)\n"
>> /* Namespace */
>> "^[ \t]*(namespace[ \t]+.*)$",
>> /* -- */
>
> Here, you are moving keywords down, but in the commit message you say
> that you "moved keywords to happen before modifier parsing". Aren't you
> moving keywords *after* something? (Where the "modifiers" are here is
> not obvious, but that can be attributed to that I don't do C#.)
>
It was a typo because I was sleepy. It was intentional to move them *after*.
Modifier parsing can contain keywords, so just to be sure, I moved the
keywords after modifier parsing, so it uses the keywords as a fallback.
If this is not what should happen, please tell.
Modifiers are prefixes to methods/properties. (the pipe separated lists)
> BTW, I appreciate that you re-arrange keywords alphabetically. Could you
> do that in the commit message, too?
>
> — Hannes
I’ll handle this too, no problem.
Thanks,
Marius
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html