Re: [PATCH] Updated C# userdiff patterns.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 26 Apr 2014, at 10:10, Johannes Sixt <j6t@xxxxxxxx> 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 <marius.ungureanu@xxxxxxxxxxx>
> 
> 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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]