Re: [PATCH] userdiff: Add diff driver for Kotlin lang and tests
From: Junio C Hamano <hidden>
Date: 2022-03-01 09:32:49
Jaydeep P Das [off-list ref] writes:
Subject: Re: [PATCH] userdiff: Add diff driver for Kotlin lang and tests
"Add" -> "add". "lang and tests" -> "language".
The xfuncname pattern finds func/class declarations in diffs to display as a hunk header.
Yes, but an entry for a language in userdiff.c consists of the funcname pattern AND the word_regex. And I think the patch is adding both, not just funcname pattern.
This patch adds xfuncname regex and some respective tests for Kotlin language. Also modifies `Documentation./gitattributes.txt` to state the same.
See Documenation/SubmittingPatches::[[imperative-mood]]. But it probably is better to leave these unsaid. The patterns, tests and documentation updates go hand in hand.
quoted hunk ↗ jump to hunk
11 files changed, 59 insertions(+) create mode 100644 t/t4018/kotlin-class create mode 100644 t/t4018/kotlin-enum-class create mode 100644 t/t4018/kotlin-fun create mode 100644 t/t4018/kotlin-inheritace-class create mode 100644 t/t4018/kotlin-inline-class create mode 100644 t/t4018/kotlin-interface create mode 100644 t/t4018/kotlin-nested-fun create mode 100644 t/t4018/kotlin-public-class create mode 100644 t/t4018/kotlin-sealed-classdiff --git a/Documentation/gitattributes.txt b/Documentation/gitattributes.txt index a71dad2674..94d06dc337 100644 --- a/Documentation/gitattributes.txt +++ b/Documentation/gitattributes.txt@@ -829,6 +829,8 @@ patterns are available: - `java` suitable for source code in the Java language. +- `kotlin` suitable for source code in the Kotlin language + - `markdown` suitable for Markdown documents.
The entries before and after this new one both end with a full stop, and this new entry should do the same.
quoted hunk ↗ jump to hunk
diff --git a/userdiff.c b/userdiff.c index 8578cb0d12..a6cc6dc3b7 100644 --- a/userdiff.c +++ b/userdiff.c@@ -168,6 +168,14 @@ PATTERNS("java", "|[-+0-9.e]+[fFlL]?|0[xXbB]?[0-9a-fA-F]+[lL]?" "|[-+*/<>%&^|=!]=" "|--|\\+\\+|<<=?|>>>?=?|&&|\\|\\|"), +PATTERNS("kotlin", + /* fun, class, interface, declarations */ + "^[ \t]*(([a-z]+[ \t]+)*(fun|class|interface)[ \t]+.*[ \t]*)$",
With the three keywords clearly visible in the pattern, the comment looks somewhat redundant. I dunno.
+ /* -- */ + "[a-zA-Z_][a-zA-Z0-9_]*" + "|[-+0-9.e]+[fFlL]?|0[xXbB]?[0-9a-fA-F]+[lL]?" + "|[-+*/<>%&^|=!]=" + "|--|\\+\\+|<<=?|>>>?=?|&&|\\|\\|"),
The latter half is word regex, which is tested in t4034 to at least ensure that it is well formed. We can also add t/t4034/$language/ to see the patterns hit the word boundary as expected.
PATTERNS("markdown",
"^ {0,3}#{1,6}[ \t].*",
/* -- */