Re: [PATCH v5] userdiff: improve java hunk header regex

2 messages, 2 authors, 2021-08-11 · open the first message on its own page

Re: [PATCH v5] userdiff: improve java hunk header regex

From: Junio C Hamano <hidden>
Date: 2021-08-11 17:16:53

Just a few whitespace nits that "git am" noticed for me.

Tassilo Horn [off-list ref] writes:
quoted hunk
diff --git a/t/t4018/java-class-member-function b/t/t4018/java-class-member-function
index 298bc7a71b..a8d7850412 100644
--- a/t/t4018/java-class-member-function
+++ b/t/t4018/java-class-member-function
@@ -3,6 +3,10 @@ public class Beer
 	int special;
 	public static void main(String RIGHT[])
 	{
-		System.out.print("ChangeMe");
+            someMethodCall();
+            someOtherMethod("17")
+                .doThat();
+            // Whatever
+            System.out.print("ChangeMe");
I notice that the original used HT (horizontal tab) to indent, but
the new one uses runs of SP (space).  This project has no written
preference for coding style for Java, which means it would have been
more appreciated if the original style were kept.
quoted hunk
diff --git a/t/t4018/java-enum-constant b/t/t4018/java-enum-constant
new file mode 100644
index 0000000000..a1931c8379
--- /dev/null
+++ b/t/t4018/java-enum-constant
@@ -0,0 +1,6 @@
+private enum RIGHT {
+    ONE,
+    TWO,
+    THREE,
+    ChangeMe
+}
For these new tests, you'd be the one setting what styles to use ;-)
After all, we serve users from projects with different style, and
having variety in our test patterns is not bad.
quoted hunk
diff --git a/userdiff.c b/userdiff.c
index 3c3bbe38b0..6644931ce1 100644
--- a/userdiff.c
+++ b/userdiff.c
@@ -142,7 +142,11 @@ 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]*\\([^;]*)$",
+         /* Class, enum, and interface declarations */
+         "^[ \t]*(([a-z]+[ \t]+)*(class|enum|interface)[ \t]+[A-Za-z][A-Za-z0-9_$]*[ \t]+.*)$\n"
+         /* Method definitions; note that constructor signatures are not */
+         /* matched because they are indistinguishable from method calls. */
+         "^[ \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]?"
This hunk does violate project convention that our codebase uses
leading HT to indent (and align with extra SPs if needed).

Re: [PATCH v5] userdiff: improve java hunk header regex

From: Tassilo Horn <hidden>
Date: 2021-08-11 17:52:15

Junio C Hamano [off-list ref] writes:
Just a few whitespace nits that "git am" noticed for me.
Ah, indeed.  Should all be fixed in v6.
quoted
diff --git a/t/t4018/java-class-member-function b/t/t4018/java-class-member-function
index 298bc7a71b..a8d7850412 100644
--- a/t/t4018/java-class-member-function
+++ b/t/t4018/java-class-member-function
@@ -3,6 +3,10 @@ public class Beer
 	int special;
 	public static void main(String RIGHT[])
 	{
-		System.out.print("ChangeMe");
+            someMethodCall();
+            someOtherMethod("17")
+                .doThat();
+            // Whatever
+            System.out.print("ChangeMe");
I notice that the original used HT (horizontal tab) to indent, but
the new one uses runs of SP (space).  This project has no written
preference for coding style for Java, which means it would have been
more appreciated if the original style were kept.
Fixed in v6.
quoted
diff --git a/t/t4018/java-enum-constant b/t/t4018/java-enum-constant
new file mode 100644
index 0000000000..a1931c8379
--- /dev/null
+++ b/t/t4018/java-enum-constant
@@ -0,0 +1,6 @@
+private enum RIGHT {
+    ONE,
+    TWO,
+    THREE,
+    ChangeMe
+}
For these new tests, you'd be the one setting what styles to use ;-)
After all, we serve users from projects with different style, and
having variety in our test patterns is not bad.
I completely agree.
quoted
diff --git a/userdiff.c b/userdiff.c
index 3c3bbe38b0..6644931ce1 100644
--- a/userdiff.c
+++ b/userdiff.c
@@ -142,7 +142,11 @@ 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]*\\([^;]*)$",
+         /* Class, enum, and interface declarations */
+         "^[ \t]*(([a-z]+[ \t]+)*(class|enum|interface)[ \t]+[A-Za-z][A-Za-z0-9_$]*[ \t]+.*)$\n"
+         /* Method definitions; note that constructor signatures are not */
+         /* matched because they are indistinguishable from method calls. */
+         "^[ \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]?"
This hunk does violate project convention that our codebase uses
leading HT to indent (and align with extra SPs if needed).
Also fixed in v6.

That leads to the question if you'd welcome a patch adding a
.dir-locals.el to the repository with the right settings so that it'll
just work for contributors using the One True Editor.  Would you?

Bye,
Tassilo
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help