userdiff: better method/property matching for C#

- Support multi-line methods by not requiring closing parenthesis.
- Support multiple generics (comma was missing before).
- Add missing `foreach`, `lock` and  `fixed` keywords to skip over.
- Remove `instanceof` keyword, which isn't C#.
- Also detect non-method keywords not positioned at the start of a line.
- Added tests; none existed before.

The overall strategy is to focus more on what isn't expected for
method/property definitions, instead of what is, but is fully optional.

Signed-off-by: Steven Jeuris <steven.jeuris@gmail.com>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Steven Jeuris
2024-04-03 21:42:44 +00:00
committed by Junio C Hamano
parent 43072b4ca1
commit ec0e3075d2
21 changed files with 352 additions and 6 deletions

View File

@ -0,0 +1,22 @@
using System;
class Example : IDisposable
{
string Method(int RIGHT)
{
new Example();
new Example(
);
new Example { };
using (this)
{
}
var def =
this is default(
Example);
return "ChangeMe";
}
public void Dispose() {}
}