{"thread":{"id":"54031","subject":"[PATCH 0/2] Improve and test Fortran xfuncname regex","startedAt":"2020-08-12T22:30:52Z","lastAt":"2020-08-13T18:22:18Z","messageCount":7,"participants":["Philippe Blain via GitGitGadget","Elijah Newren","Philippe Blain","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":2},"messages":[{"id":"403512","messageId":"pull.700.git.1597271429.gitgitgadget@gmail.com","threadId":"54031","inReplyTo":null,"subject":"[PATCH 0/2] Improve and test Fortran xfuncname regex","fromName":"Philippe Blain via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2020-08-12T22:30:27Z","receivedAt":"2020-08-12T22:30:52Z","isPatch":true,"sender":{"key":"levraiphilippeblain@gmail.com","avatar":"https://avatars.githubusercontent.com/u/44212482?v=4"},"body":"This series adds tests for the Fortran xfuncname regex and fixes a\nshortcoming of the regex.\n\nPhilippe Blain (2):\n  userdiff: add tests for Fortran xfuncname regex\n  userdiff: improve Fortran xfuncname regex\n\n t/t4018/fortran-block-data          |  5 +++++\n t/t4018/fortran-comment             | 13 +++++++++++++\n t/t4018/fortran-comment-keyword     | 14 ++++++++++++++\n t/t4018/fortran-comment-legacy      | 13 +++++++++++++\n t/t4018/fortran-comment-legacy-star | 13 +++++++++++++\n t/t4018/fortran-external-function   |  9 +++++++++\n t/t4018/fortran-external-subroutine |  5 +++++\n t/t4018/fortran-module              |  5 +++++\n t/t4018/fortran-module-procedure    | 13 +++++++++++++\n t/t4018/fortran-program             |  5 +++++\n userdiff.c                          |  6 +++++-\n 11 files changed, 100 insertions(+), 1 deletion(-)\n create mode 100644 t/t4018/fortran-block-data\n create mode 100644 t/t4018/fortran-comment\n create mode 100644 t/t4018/fortran-comment-keyword\n create mode 100644 t/t4018/fortran-comment-legacy\n create mode 100644 t/t4018/fortran-comment-legacy-star\n create mode 100644 t/t4018/fortran-external-function\n create mode 100644 t/t4018/fortran-external-subroutine\n create mode 100644 t/t4018/fortran-module\n create mode 100644 t/t4018/fortran-module-procedure\n create mode 100644 t/t4018/fortran-program\n\n\nbase-commit: 4f0a8be78499454eac3985b6e7e144b8376ab0a5\nPublished-As: https://github.com/gitgitgadget/git/releases/tag/pr-700%2Fphil-blain%2Ffortran-better-userdiff-v1\nFetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-700/phil-blain/fortran-better-userdiff-v1\nPull-Request: https://github.com/gitgitgadget/git/pull/700\n-- \ngitgitgadget\n"},{"id":"403513","messageId":"30cb5c5cd57162837efe1153bf88cb8863206323.1597271429.git.gitgitgadget@gmail.com","threadId":"54031","inReplyTo":"pull.700.git.1597271429.gitgitgadget@gmail.com","subject":"[PATCH 1/2] userdiff: add tests for Fortran xfuncname regex","fromName":"Philippe Blain via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2020-08-12T22:30:28Z","receivedAt":"2020-08-12T22:30:52Z","isPatch":true,"sender":{"key":"levraiphilippeblain@gmail.com","avatar":"https://avatars.githubusercontent.com/u/44212482?v=4"},"body":"From: Philippe Blain <levraiphilippeblain@gmail.com>\n\nThe Fortran userdiff patterns, introduced in 909a5494f8 (userdiff.c: add\nbuiltin fortran regex patterns, 2010-09-10), predate the test\ninfrastructure for xfuncname patterns, introduced in bfa7d01413 (t4018:\nan infrastructure to test hunk headers, 2014-03-21).\n\nAdd tests for the Fortran xfuncname patterns. The test\n't/t4018/fortran-comment-keyword' documents a shortcoming of the regex\nthat is fixed in a subsequent commit.\n\nWhile at it, add descriptive comments for the different parts of the\nregex.\n\nSigned-off-by: Philippe Blain <levraiphilippeblain@gmail.com>\n---\n t/t4018/fortran-block-data          |  5 +++++\n t/t4018/fortran-comment             | 13 +++++++++++++\n t/t4018/fortran-comment-keyword     | 15 +++++++++++++++\n t/t4018/fortran-comment-legacy      | 13 +++++++++++++\n t/t4018/fortran-comment-legacy-star | 13 +++++++++++++\n t/t4018/fortran-external-function   |  9 +++++++++\n t/t4018/fortran-external-subroutine |  5 +++++\n t/t4018/fortran-module              |  5 +++++\n t/t4018/fortran-module-procedure    | 13 +++++++++++++\n t/t4018/fortran-program             |  5 +++++\n userdiff.c                          |  4 ++++\n 11 files changed, 100 insertions(+)\n create mode 100644 t/t4018/fortran-block-data\n create mode 100644 t/t4018/fortran-comment\n create mode 100644 t/t4018/fortran-comment-keyword\n create mode 100644 t/t4018/fortran-comment-legacy\n create mode 100644 t/t4018/fortran-comment-legacy-star\n create mode 100644 t/t4018/fortran-external-function\n create mode 100644 t/t4018/fortran-external-subroutine\n create mode 100644 t/t4018/fortran-module\n create mode 100644 t/t4018/fortran-module-procedure\n create mode 100644 t/t4018/fortran-program\n\ndiff --git a/t/t4018/fortran-block-data b/t/t4018/fortran-block-data\nnew file mode 100644\nindex 0000000000..63d4e21d0a\n--- /dev/null\n+++ b/t/t4018/fortran-block-data\n@@ -0,0 +1,5 @@\n+       BLOCK DATA RIGHT\n+       \n+       COMMON /B/ C, ChangeMe\n+       DATA C, ChangeMe  / 2.0, 6.0 / \n+       END \ndiff --git a/t/t4018/fortran-comment b/t/t4018/fortran-comment\nnew file mode 100644\nindex 0000000000..7b10d17658\n--- /dev/null\n+++ b/t/t4018/fortran-comment\n@@ -0,0 +1,13 @@\n+      module a\n+\n+      contains\n+\n+      ! subroutine wrong\n+      subroutine RIGHT\n+      ! subroutine wrong\n+\n+      real ChangeMe\n+\n+      end subroutine RIGHT\n+\n+      end module a\ndiff --git a/t/t4018/fortran-comment-keyword b/t/t4018/fortran-comment-keyword\nnew file mode 100644\nindex 0000000000..c5dbdb4c61\n--- /dev/null\n+++ b/t/t4018/fortran-comment-keyword\n@@ -0,0 +1,15 @@\n+      module a\n+\n+      contains\n+\n+      subroutine RIGHT (funcA, funcB)\n+\n+      real funcA  ! grid function a\n+      real funcB  ! grid function b\n+\n+      real ChangeMe\n+      integer broken\n+\n+      end subroutine RIGHT\n+\n+      end module a\ndiff --git a/t/t4018/fortran-comment-legacy b/t/t4018/fortran-comment-legacy\nnew file mode 100644\nindex 0000000000..53cd062c1e\n--- /dev/null\n+++ b/t/t4018/fortran-comment-legacy\n@@ -0,0 +1,13 @@\n+      module a\n+\n+      contains\n+\n+C subroutine wrong\n+      subroutine RIGHT\n+C subroutine wrong\n+\n+      real ChangeMe\n+\n+      end subroutine RIGHT\n+\n+      end module a\ndiff --git a/t/t4018/fortran-comment-legacy-star b/t/t4018/fortran-comment-legacy-star\nnew file mode 100644\nindex 0000000000..2cbcdc3d8a\n--- /dev/null\n+++ b/t/t4018/fortran-comment-legacy-star\n@@ -0,0 +1,13 @@\n+      module a\n+\n+      contains\n+\n+* subroutine wrong\n+      subroutine RIGHT\n+* subroutine wrong\n+\n+      real ChangeMe\n+\n+      end subroutine RIGHT\n+\n+      end module a\ndiff --git a/t/t4018/fortran-external-function b/t/t4018/fortran-external-function\nnew file mode 100644\nindex 0000000000..5a2d85d3aa\n--- /dev/null\n+++ b/t/t4018/fortran-external-function\n@@ -0,0 +1,9 @@\n+function RIGHT(a, b) result(c)\n+\n+integer, intent(in) :: ChangeMe\n+integer, intent(in) :: b\n+integer, intent(out) :: c\n+\n+c = a+b\n+\n+end function RIGHT\ndiff --git a/t/t4018/fortran-external-subroutine b/t/t4018/fortran-external-subroutine\nnew file mode 100644\nindex 0000000000..4ce85fea13\n--- /dev/null\n+++ b/t/t4018/fortran-external-subroutine\n@@ -0,0 +1,5 @@\n+subroutine RIGHT\n+\n+real ChangeMe\n+\n+end subroutine RIGHT\ndiff --git a/t/t4018/fortran-module b/t/t4018/fortran-module\nnew file mode 100644\nindex 0000000000..c4b737dac3\n--- /dev/null\n+++ b/t/t4018/fortran-module\n@@ -0,0 +1,5 @@\n+module RIGHT\n+\n+use ChangeMe\n+\n+end module RIGHT\ndiff --git a/t/t4018/fortran-module-procedure b/t/t4018/fortran-module-procedure\nnew file mode 100644\nindex 0000000000..1ce6d854c2\n--- /dev/null\n+++ b/t/t4018/fortran-module-procedure\n@@ -0,0 +1,13 @@\n+ module RIGHT\n+\n+   implicit none\n+   private\n+\n+   interface letters  ! generic interface\n+      module procedure aaaa, &\n+                       bbbb, &\n+                       ChangeMe, &\n+                       dddd\n+   end interface\n+   \n+end module RIGHT\ndiff --git a/t/t4018/fortran-program b/t/t4018/fortran-program\nnew file mode 100644\nindex 0000000000..4616895e4b\n--- /dev/null\n+++ b/t/t4018/fortran-program\n@@ -0,0 +1,5 @@\n+program RIGHT\n+\n+call ChangeMe\n+\n+end program RIGHT\ndiff --git a/userdiff.c b/userdiff.c\nindex 1df884ef0b..707d82435a 100644\n--- a/userdiff.c\n+++ b/userdiff.c\n@@ -46,9 +46,13 @@ PATTERNS(\"elixir\",\n \t /* Not real operators, but should be grouped */\n \t \"|:?%[A-Za-z0-9_.]\\\\{\\\\}?\"),\n IPATTERN(\"fortran\",\n+\t /* Don't match comment lines */\n \t \"!^([C*]|[ \\t]*!)\\n\"\n+\t /* Don't match 'module procedure' lines */\n \t \"!^[ \\t]*MODULE[ \\t]+PROCEDURE[ \\t]\\n\"\n+\t /* Program, module, block data */\n \t \"^[ \\t]*((END[ \\t]+)?(PROGRAM|MODULE|BLOCK[ \\t]+DATA\"\n+\t\t/* Subroutines and functions */\n \t\t\"|([^'\\\" \\t]+[ \\t]+)*(SUBROUTINE|FUNCTION))[ \\t]+[A-Z].*)$\",\n \t /* -- */\n \t \"[a-zA-Z][a-zA-Z0-9_]*\"\n-- \ngitgitgadget\n\n"},{"id":"403514","messageId":"69fe977b66f9744c914cfdfa2da4b9be5e720e4f.1597271429.git.gitgitgadget@gmail.com","threadId":"54031","inReplyTo":"pull.700.git.1597271429.gitgitgadget@gmail.com","subject":"[PATCH 2/2] userdiff: improve Fortran xfuncname regex","fromName":"Philippe Blain via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2020-08-12T22:30:29Z","receivedAt":"2020-08-12T22:30:52Z","isPatch":true,"sender":{"key":"levraiphilippeblain@gmail.com","avatar":"https://avatars.githubusercontent.com/u/44212482?v=4"},"body":"From: Philippe Blain <levraiphilippeblain@gmail.com>\n\nThe third part of the Fortran xfuncname regex wants to match the\nbeginning of a subroutine or function, so it allows for all characters\nexcept `'`, `\"` or whitespace before the keyword 'function' or\n'subroutine'. This is meant to match the 'recursive', 'elemental' or\n'pure' keywords, as well as function return types, and to prevent\nmatches inside strings.\n\nHowever, the negated set does not contain the `!` comment character,\nso a line with an end-of-line comment containing the keyword 'function' or\n'subroutine' followed by another word is mistakenly chosen as a hunk header.\n\nImprove the regex by adding `!` to the negated set.\n\nSigned-off-by: Philippe Blain <levraiphilippeblain@gmail.com>\n---\n t/t4018/fortran-comment-keyword | 1 -\n userdiff.c                      | 2 +-\n 2 files changed, 1 insertion(+), 2 deletions(-)\n\ndiff --git a/t/t4018/fortran-comment-keyword b/t/t4018/fortran-comment-keyword\nindex c5dbdb4c61..e9206a5379 100644\n--- a/t/t4018/fortran-comment-keyword\n+++ b/t/t4018/fortran-comment-keyword\n@@ -8,7 +8,6 @@\n       real funcB  ! grid function b\n \n       real ChangeMe\n-      integer broken\n \n       end subroutine RIGHT\n \ndiff --git a/userdiff.c b/userdiff.c\nindex 707d82435a..fde02f225b 100644\n--- a/userdiff.c\n+++ b/userdiff.c\n@@ -53,7 +53,7 @@ IPATTERN(\"fortran\",\n \t /* Program, module, block data */\n \t \"^[ \\t]*((END[ \\t]+)?(PROGRAM|MODULE|BLOCK[ \\t]+DATA\"\n \t\t/* Subroutines and functions */\n-\t\t\"|([^'\\\" \\t]+[ \\t]+)*(SUBROUTINE|FUNCTION))[ \\t]+[A-Z].*)$\",\n+\t\t\"|([^!'\\\" \\t]+[ \\t]+)*(SUBROUTINE|FUNCTION))[ \\t]+[A-Z].*)$\",\n \t /* -- */\n \t \"[a-zA-Z][a-zA-Z0-9_]*\"\n \t \"|\\\\.([Ee][Qq]|[Nn][Ee]|[Gg][TtEe]|[Ll][TtEe]|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee]|[Aa][Nn][Dd]|[Oo][Rr]|[Nn]?[Ee][Qq][Vv]|[Nn][Oo][Tt])\\\\.\"\n-- \ngitgitgadget\n"},{"id":"403523","messageId":"CABPp-BENKdxqXjH07yCNojRWQ3XO+_mm8x+LSVLTBx36m6nSSw@mail.gmail.com","threadId":"54031","inReplyTo":"69fe977b66f9744c914cfdfa2da4b9be5e720e4f.1597271429.git.gitgitgadget@gmail.com","subject":"Re: [PATCH 2/2] userdiff: improve Fortran xfuncname regex","fromName":"Elijah Newren","fromEmail":"newren@gmail.com","sentAt":"2020-08-13T02:10:45Z","receivedAt":"2020-08-13T02:11:02Z","isPatch":true,"sender":{"key":"newren@gmail.com","avatar":"https://avatars.githubusercontent.com/u/5455730?v=4"},"body":"On Wed, Aug 12, 2020 at 3:34 PM Philippe Blain via GitGitGadget\n<gitgitgadget@gmail.com> wrote:\n>\n> From: Philippe Blain <levraiphilippeblain@gmail.com>\n>\n> The third part of the Fortran xfuncname regex wants to match the\n> beginning of a subroutine or function, so it allows for all characters\n> except `'`, `\"` or whitespace before the keyword 'function' or\n> 'subroutine'. This is meant to match the 'recursive', 'elemental' or\n> 'pure' keywords, as well as function return types, and to prevent\n> matches inside strings.\n>\n> However, the negated set does not contain the `!` comment character,\n> so a line with an end-of-line comment containing the keyword 'function' or\n> 'subroutine' followed by another word is mistakenly chosen as a hunk header.\n>\n> Improve the regex by adding `!` to the negated set.\n>\n> Signed-off-by: Philippe Blain <levraiphilippeblain@gmail.com>\n> ---\n>  t/t4018/fortran-comment-keyword | 1 -\n>  userdiff.c                      | 2 +-\n>  2 files changed, 1 insertion(+), 2 deletions(-)\n>\n> diff --git a/t/t4018/fortran-comment-keyword b/t/t4018/fortran-comment-keyword\n> index c5dbdb4c61..e9206a5379 100644\n> --- a/t/t4018/fortran-comment-keyword\n> +++ b/t/t4018/fortran-comment-keyword\n> @@ -8,7 +8,6 @@\n>        real funcB  ! grid function b\n>\n>        real ChangeMe\n> -      integer broken\n>\n>        end subroutine RIGHT\n>\n\nThis change seems orthogonal to the explanation in the commit message.\nWhat is its purpose, and does it belong in this commit or a different\none?\n\n> diff --git a/userdiff.c b/userdiff.c\n> index 707d82435a..fde02f225b 100644\n> --- a/userdiff.c\n> +++ b/userdiff.c\n> @@ -53,7 +53,7 @@ IPATTERN(\"fortran\",\n>          /* Program, module, block data */\n>          \"^[ \\t]*((END[ \\t]+)?(PROGRAM|MODULE|BLOCK[ \\t]+DATA\"\n>                 /* Subroutines and functions */\n> -               \"|([^'\\\" \\t]+[ \\t]+)*(SUBROUTINE|FUNCTION))[ \\t]+[A-Z].*)$\",\n> +               \"|([^!'\\\" \\t]+[ \\t]+)*(SUBROUTINE|FUNCTION))[ \\t]+[A-Z].*)$\",\n>          /* -- */\n>          \"[a-zA-Z][a-zA-Z0-9_]*\"\n>          \"|\\\\.([Ee][Qq]|[Nn][Ee]|[Gg][TtEe]|[Ll][TtEe]|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee]|[Aa][Nn][Dd]|[Oo][Rr]|[Nn]?[Ee][Qq][Vv]|[Nn][Oo][Tt])\\\\.\"\n> --\n> gitgitgadget\n"},{"id":"403541","messageId":"8014D105-0957-4A45-B375-1027E070C74E@gmail.com","threadId":"54031","inReplyTo":"CABPp-BENKdxqXjH07yCNojRWQ3XO+_mm8x+LSVLTBx36m6nSSw@mail.gmail.com","subject":"Re: [PATCH 2/2] userdiff: improve Fortran xfuncname regex","fromName":"Philippe Blain","fromEmail":"levraiphilippeblain@gmail.com","sentAt":"2020-08-13T12:45:21Z","receivedAt":"2020-08-13T12:45:35Z","isPatch":true,"sender":{"key":"levraiphilippeblain@gmail.com","avatar":"https://avatars.githubusercontent.com/u/44212482?v=4"},"body":"Hi Elijah, \n\n> Le 12 août 2020 à 22:10, Elijah Newren <newren@gmail.com> a écrit :\n> \n> On Wed, Aug 12, 2020 at 3:34 PM Philippe Blain via GitGitGadget\n> <gitgitgadget@gmail.com> wrote:\n>> \n>> From: Philippe Blain <levraiphilippeblain@gmail.com>\n>> \n>> The third part of the Fortran xfuncname regex wants to match the\n>> beginning of a subroutine or function, so it allows for all characters\n>> except `'`, `\"` or whitespace before the keyword 'function' or\n>> 'subroutine'. This is meant to match the 'recursive', 'elemental' or\n>> 'pure' keywords, as well as function return types, and to prevent\n>> matches inside strings.\n>> \n>> However, the negated set does not contain the `!` comment character,\n>> so a line with an end-of-line comment containing the keyword 'function' or\n>> 'subroutine' followed by another word is mistakenly chosen as a hunk header.\n>> \n>> Improve the regex by adding `!` to the negated set.\n>> \n>> Signed-off-by: Philippe Blain <levraiphilippeblain@gmail.com>\n>> ---\n>> t/t4018/fortran-comment-keyword | 1 -\n>> userdiff.c                      | 2 +-\n>> 2 files changed, 1 insertion(+), 2 deletions(-)\n>> \n>> diff --git a/t/t4018/fortran-comment-keyword b/t/t4018/fortran-comment-keyword\n>> index c5dbdb4c61..e9206a5379 100644\n>> --- a/t/t4018/fortran-comment-keyword\n>> +++ b/t/t4018/fortran-comment-keyword\n>> @@ -8,7 +8,6 @@\n>>       real funcB  ! grid function b\n>> \n>>       real ChangeMe\n>> -      integer broken\n>> \n>>       end subroutine RIGHT\n>> \n> \n> This change seems orthogonal to the explanation in the commit message.\n> What is its purpose, and does it belong in this commit or a different\n> one?\n\nIf you take a look at t/t4018/README, the way to mark t4018 tests as \"known failures\"\nis to insert \"broken\" somewhere in the file. Since I'm fixing the regex in this commit to be able \nto cope with the situation in t/t4018/fortran-comment-keyword, I'm unmarking this test as broken.\n\nCheers,\n\nPhilippe.\n\n"},{"id":"403543","messageId":"CABPp-BFwX-m=BryaxkSyh-126O_0GQxyqRvFnKeOQ66Feiq4Kw@mail.gmail.com","threadId":"54031","inReplyTo":"8014D105-0957-4A45-B375-1027E070C74E@gmail.com","subject":"Re: [PATCH 2/2] userdiff: improve Fortran xfuncname regex","fromName":"Elijah Newren","fromEmail":"newren@gmail.com","sentAt":"2020-08-13T14:04:25Z","receivedAt":"2020-08-13T14:04:41Z","isPatch":true,"sender":{"key":"newren@gmail.com","avatar":"https://avatars.githubusercontent.com/u/5455730?v=4"},"body":"Hi Philippe,\n\nOn Thu, Aug 13, 2020 at 5:45 AM Philippe Blain\n<levraiphilippeblain@gmail.com> wrote:\n>\n> Hi Elijah,\n>\n> > Le 12 août 2020 à 22:10, Elijah Newren <newren@gmail.com> a écrit :\n> >\n> > On Wed, Aug 12, 2020 at 3:34 PM Philippe Blain via GitGitGadget\n> > <gitgitgadget@gmail.com> wrote:\n> >>\n> >> From: Philippe Blain <levraiphilippeblain@gmail.com>\n> >>\n> >> The third part of the Fortran xfuncname regex wants to match the\n> >> beginning of a subroutine or function, so it allows for all characters\n> >> except `'`, `\"` or whitespace before the keyword 'function' or\n> >> 'subroutine'. This is meant to match the 'recursive', 'elemental' or\n> >> 'pure' keywords, as well as function return types, and to prevent\n> >> matches inside strings.\n> >>\n> >> However, the negated set does not contain the `!` comment character,\n> >> so a line with an end-of-line comment containing the keyword 'function' or\n> >> 'subroutine' followed by another word is mistakenly chosen as a hunk header.\n> >>\n> >> Improve the regex by adding `!` to the negated set.\n> >>\n> >> Signed-off-by: Philippe Blain <levraiphilippeblain@gmail.com>\n> >> ---\n> >> t/t4018/fortran-comment-keyword | 1 -\n> >> userdiff.c                      | 2 +-\n> >> 2 files changed, 1 insertion(+), 2 deletions(-)\n> >>\n> >> diff --git a/t/t4018/fortran-comment-keyword b/t/t4018/fortran-comment-keyword\n> >> index c5dbdb4c61..e9206a5379 100644\n> >> --- a/t/t4018/fortran-comment-keyword\n> >> +++ b/t/t4018/fortran-comment-keyword\n> >> @@ -8,7 +8,6 @@\n> >>       real funcB  ! grid function b\n> >>\n> >>       real ChangeMe\n> >> -      integer broken\n> >>\n> >>       end subroutine RIGHT\n> >>\n> >\n> > This change seems orthogonal to the explanation in the commit message.\n> > What is its purpose, and does it belong in this commit or a different\n> > one?\n>\n> If you take a look at t/t4018/README, the way to mark t4018 tests as \"known failures\"\n> is to insert \"broken\" somewhere in the file. Since I'm fixing the regex in this commit to be able\n> to cope with the situation in t/t4018/fortran-comment-keyword, I'm unmarking this test as broken.\n\nAh, gotcha.  I guess that's what I get for trying to review a random\npatch outside my area of expertise.  :-)  Thanks for explaining how\nthis works to me.\n\nElijah\n"},{"id":"403585","messageId":"xmqqeeoa2ypa.fsf@gitster.c.googlers.com","threadId":"54031","inReplyTo":"pull.700.git.1597271429.gitgitgadget@gmail.com","subject":"Re: [PATCH 0/2] Improve and test Fortran xfuncname regex","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-08-13T18:22:09Z","receivedAt":"2020-08-13T18:22:18Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"Philippe Blain via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n\n> This series adds tests for the Fortran xfuncname regex and fixes a\n> shortcoming of the regex.\n\nWill queue.  Thanks.\n\n>\n> Philippe Blain (2):\n>   userdiff: add tests for Fortran xfuncname regex\n>   userdiff: improve Fortran xfuncname regex\n>\n>  t/t4018/fortran-block-data          |  5 +++++\n>  t/t4018/fortran-comment             | 13 +++++++++++++\n>  t/t4018/fortran-comment-keyword     | 14 ++++++++++++++\n>  t/t4018/fortran-comment-legacy      | 13 +++++++++++++\n>  t/t4018/fortran-comment-legacy-star | 13 +++++++++++++\n>  t/t4018/fortran-external-function   |  9 +++++++++\n>  t/t4018/fortran-external-subroutine |  5 +++++\n>  t/t4018/fortran-module              |  5 +++++\n>  t/t4018/fortran-module-procedure    | 13 +++++++++++++\n>  t/t4018/fortran-program             |  5 +++++\n>  userdiff.c                          |  6 +++++-\n>  11 files changed, 100 insertions(+), 1 deletion(-)\n>  create mode 100644 t/t4018/fortran-block-data\n>  create mode 100644 t/t4018/fortran-comment\n>  create mode 100644 t/t4018/fortran-comment-keyword\n>  create mode 100644 t/t4018/fortran-comment-legacy\n>  create mode 100644 t/t4018/fortran-comment-legacy-star\n>  create mode 100644 t/t4018/fortran-external-function\n>  create mode 100644 t/t4018/fortran-external-subroutine\n>  create mode 100644 t/t4018/fortran-module\n>  create mode 100644 t/t4018/fortran-module-procedure\n>  create mode 100644 t/t4018/fortran-program\n>\n>\n> base-commit: 4f0a8be78499454eac3985b6e7e144b8376ab0a5\n> Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-700%2Fphil-blain%2Ffortran-better-userdiff-v1\n> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-700/phil-blain/fortran-better-userdiff-v1\n> Pull-Request: https://github.com/gitgitgadget/git/pull/700\n"}]}