Re: [PATCH 1/2] userdiff: support C# async methods and correct C# keywords
On Fri, Jun 6, 2014 at 12:34 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 7 quoted lines
> Steve Hoelzer <shoelzer@gmail.com> writes:
>
>> instanceof() is listed as keywords, but there is no such thing (it is
>> in Java, though); in C# we use typeof(), 'is', and 'as for similar
>> purposes
>
> You would need to balance the quotes around "as" ;-)
Show 12 quoted lines
> But reading the patch again after noticing that you have () after
> typeof but not after is/as, I am not sure if the change proposed
> here is even correct for the latter two. I do not speal c-sharp, so
> I asked http://msdn.microsoft.com/en-us/library/cscsdfbt.aspx for
> some examples and here are what I found:
>
> Type t = typeof(ExampleClass)
> Base b = derived as Base;
> if (obj is MyObject) ...
>
> Unlike the control-flow keywords (e.g. do/while/for/...), do they
> typically appear at the beginning of lines?
No, I would never expect to see 'is' or 'as' at the beginning of a line.
> Isn't the purpose of these !^[ \t]* patterns to reject lines that
> begin with the language keywords that do not start functions, so
> listing a keyword that does not usually appear at the beginning of
> line looks like a churn that is not useful.
Not sure about the purpose of those lines, but I think you're correct.
Steve
Show 16 quoted lines
>> diff --git a/userdiff.c b/userdiff.c
>> index fad52d6..96eda6c 100644
>> --- a/userdiff.c
>> +++ b/userdiff.c
>> @@ -134,9 +134,9 @@ PATTERNS("cpp",
>> "|[-+*/<>%&^|=!]=|--|\\+\\+|<<=?|>>=?|&&|\\|\\||::|->\\*?|\\.\\*"),
>> PATTERNS("csharp",
>> /* Keywords */
>> - "!^[ \t]*(do|while|for|if|else|instanceof|new|return|switch|case|throw|catch|using)\n"
>> + "!^[ \t]*(do|while|for|foreach|if|else|typeof|is|as|new|return|switch|case|default|throw|try|catch|using)\n"
>> /* Methods and constructors */
>> - "^[ \t]*(((static|public|internal|private|protected|new|virtual|sealed|override|unsafe)[ \t]+)*[][<>@.~_[:alnum:]]+[ \t]+[<>@._[:alnum:]]+[ \t]*\\(.*\\))[ \t]*$\n"
>> + "^[ \t]*(((static|public|internal|private|protected|new|virtual|sealed|override|unsafe|async)[ \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"
>> /* Type definitions */