[PATCH] userdiff: improve java regex for generic return types
From: Tassilo Horn <hidden>
Date: 2021-08-09 20:34:10
Currently, the git diff hunk headers show the wrong method signature if the
method has a generic return type because the regex doesn't allow < and > in the
return type. This patch adds those.
Bug repro: In a repository with .gitattributes containing "*.java diff=java"
and a java file
--8<---------------cut here---------------start------------->8---
class MyExample {
public void firstMethod() {
// Whatever...
}
public List<Integer> secondMethod() {
// Here is some comment,
// and here is more,
// and here is even more,
// followed by this,
// and that,
// and even more.
return Arrays.asList(1, 2, 3, 4, 5);
}
}
--8<---------------cut here---------------end--------------->8---
when adding the number 6 to the Arrays.asList() call in secondMethod(), the git
diff one gets is
--8<---------------cut here---------------start------------->8---diff --git a/src/main/java/MyExample.java b/src/main/java/MyExample.java
index a0f1a6b..ea37a98 100644
--- a/src/main/java/MyExample.java
+++ b/src/main/java/MyExample.java@@ -14,6 +14,6 @@ public void firstMethod() { // followed by this, // and that, // and even more. - return Arrays.asList(1, 2, 3, 4, 5); + return Arrays.asList(1, 2, 3, 4, 5, 6); } } --8<---------------cut here---------------end--------------->8---
where the hunk header shows the signature of firstMethod whereas it should show the signature of secondMethod. Signed-off-by: Tassilo Horn <redacted> --- userdiff.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/userdiff.c b/userdiff.c
index 3c3bbe38b0..a244ad7ab1 100644
--- a/userdiff.c
+++ b/userdiff.c@@ -142,7 +142,7 @@ PATTERNS("html", "[^<>= \t]+"), PATTERNS("java", "!^[ \t]*(catch|do|for|if|instanceof|new|return|switch|throw|while)\n" - "^[ \t]*(([A-Za-z_][A-Za-z_0-9]*[ \t]+)+[A-Za-z_][A-Za-z_0-9]*[ \t]*\\([^;]*)$", + "^[ \t]*(([A-Za-z_][A-Za-z_0-9<>]*[ \t]+)+[A-Za-z_][A-Za-z_0-9]*[ \t]*\\([^;]*)$", /* -- */ "[a-zA-Z_][a-zA-Z0-9_]*" "|[-+0-9.e]+[fFlL]?|0[xXbB]?[0-9a-fA-F]+[lL]?"
--
2.32.0