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 коммит произвёл Junio C Hamano
Родитель 5fa0f5238b
Коммит 077a1fda82
7 изменённых файлов: 32 добавлений и 1 удалений

4
t/t4018/python-async-def Normal file
Просмотреть файл

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

4
t/t4018/python-class Normal file
Просмотреть файл

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

4
t/t4018/python-def Normal file
Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

@ -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]?"