userdiff: support Python async functions

Python's async functions (declared with "async def" rather than "def")
were not being displayed in hunk headers. This commit teaches git about
the async function syntax, and adds tests for the Python userdiff regex.

Signed-off-by: Josh Holland <anowlcalledjosh@gmail.com>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Josh Holland 2019-11-19 15:08:10 +00:00 committed by Junio C Hamano
parent 5fa0f5238b
commit 077a1fda82
7 changed files with 32 additions and 1 deletions

4
t/t4018/python-async-def Normal file
View File

@ -0,0 +1,4 @@
async def RIGHT(pi: int = 3.14):
while True:
break
return ChangeMe()

4
t/t4018/python-class Normal file
View File

@ -0,0 +1,4 @@
class RIGHT(int, str):
# comment
# another comment
# ChangeMe

4
t/t4018/python-def Normal file
View File

@ -0,0 +1,4 @@
def RIGHT(pi: int = 3.14):
while True:
break
return ChangeMe()

View File

@ -0,0 +1,7 @@
class Foo:
async def RIGHT(self, x: int):
return [
1,
2,
ChangeMe,
]

View File

@ -0,0 +1,5 @@
if TYPE_CHECKING:
class RIGHT:
# comment
# another comment
# ChangeMe

View File

@ -0,0 +1,7 @@
class Foo:
def RIGHT(self, x: int):
return [
1,
2,
ChangeMe,
]

View File

@ -124,7 +124,7 @@ PATTERNS("php",
"[a-zA-Z_][a-zA-Z0-9_]*"
"|[-+0-9.e]+|0[xXbB]?[0-9a-fA-F]+"
"|[-+*/<>%&^|=!.]=|--|\\+\\+|<<=?|>>=?|===|&&|\\|\\||::|->"),
PATTERNS("python", "^[ \t]*((class|def)[ \t].*)$",
PATTERNS("python", "^[ \t]*((class|(async[ \t]+)?def)[ \t].*)$",
/* -- */
"[a-zA-Z_][a-zA-Z0-9_]*"
"|[-+0-9.e]+[jJlL]?|0[xX]?[0-9a-fA-F]+[lL]?"