userdiff: add tests for Fortran xfuncname regex
The Fortran userdiff patterns, introduced in909a5494f8
(userdiff.c: add builtin fortran regex patterns, 2010-09-10), predate the test infrastructure for xfuncname patterns, introduced inbfa7d01413
(t4018: an infrastructure to test hunk headers, 2014-03-21). Add tests for the Fortran xfuncname patterns. The test 't/t4018/fortran-comment-keyword' documents a shortcoming of the regex that is fixed in a subsequent commit. While at it, add descriptive comments for the different parts of the regex. Signed-off-by: Philippe Blain <levraiphilippeblain@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
47ae905ffb
commit
b79e6925f0
5
t/t4018/fortran-block-data
Normal file
5
t/t4018/fortran-block-data
Normal file
@ -0,0 +1,5 @@
|
||||
BLOCK DATA RIGHT
|
||||
|
||||
COMMON /B/ C, ChangeMe
|
||||
DATA C, ChangeMe / 2.0, 6.0 /
|
||||
END
|
13
t/t4018/fortran-comment
Normal file
13
t/t4018/fortran-comment
Normal file
@ -0,0 +1,13 @@
|
||||
module a
|
||||
|
||||
contains
|
||||
|
||||
! subroutine wrong
|
||||
subroutine RIGHT
|
||||
! subroutine wrong
|
||||
|
||||
real ChangeMe
|
||||
|
||||
end subroutine RIGHT
|
||||
|
||||
end module a
|
15
t/t4018/fortran-comment-keyword
Normal file
15
t/t4018/fortran-comment-keyword
Normal file
@ -0,0 +1,15 @@
|
||||
module a
|
||||
|
||||
contains
|
||||
|
||||
subroutine RIGHT (funcA, funcB)
|
||||
|
||||
real funcA ! grid function a
|
||||
real funcB ! grid function b
|
||||
|
||||
real ChangeMe
|
||||
integer broken
|
||||
|
||||
end subroutine RIGHT
|
||||
|
||||
end module a
|
13
t/t4018/fortran-comment-legacy
Normal file
13
t/t4018/fortran-comment-legacy
Normal file
@ -0,0 +1,13 @@
|
||||
module a
|
||||
|
||||
contains
|
||||
|
||||
C subroutine wrong
|
||||
subroutine RIGHT
|
||||
C subroutine wrong
|
||||
|
||||
real ChangeMe
|
||||
|
||||
end subroutine RIGHT
|
||||
|
||||
end module a
|
13
t/t4018/fortran-comment-legacy-star
Normal file
13
t/t4018/fortran-comment-legacy-star
Normal file
@ -0,0 +1,13 @@
|
||||
module a
|
||||
|
||||
contains
|
||||
|
||||
* subroutine wrong
|
||||
subroutine RIGHT
|
||||
* subroutine wrong
|
||||
|
||||
real ChangeMe
|
||||
|
||||
end subroutine RIGHT
|
||||
|
||||
end module a
|
9
t/t4018/fortran-external-function
Normal file
9
t/t4018/fortran-external-function
Normal file
@ -0,0 +1,9 @@
|
||||
function RIGHT(a, b) result(c)
|
||||
|
||||
integer, intent(in) :: ChangeMe
|
||||
integer, intent(in) :: b
|
||||
integer, intent(out) :: c
|
||||
|
||||
c = a+b
|
||||
|
||||
end function RIGHT
|
5
t/t4018/fortran-external-subroutine
Normal file
5
t/t4018/fortran-external-subroutine
Normal file
@ -0,0 +1,5 @@
|
||||
subroutine RIGHT
|
||||
|
||||
real ChangeMe
|
||||
|
||||
end subroutine RIGHT
|
5
t/t4018/fortran-module
Normal file
5
t/t4018/fortran-module
Normal file
@ -0,0 +1,5 @@
|
||||
module RIGHT
|
||||
|
||||
use ChangeMe
|
||||
|
||||
end module RIGHT
|
13
t/t4018/fortran-module-procedure
Normal file
13
t/t4018/fortran-module-procedure
Normal file
@ -0,0 +1,13 @@
|
||||
module RIGHT
|
||||
|
||||
implicit none
|
||||
private
|
||||
|
||||
interface letters ! generic interface
|
||||
module procedure aaaa, &
|
||||
bbbb, &
|
||||
ChangeMe, &
|
||||
dddd
|
||||
end interface
|
||||
|
||||
end module RIGHT
|
5
t/t4018/fortran-program
Normal file
5
t/t4018/fortran-program
Normal file
@ -0,0 +1,5 @@
|
||||
program RIGHT
|
||||
|
||||
call ChangeMe
|
||||
|
||||
end program RIGHT
|
@ -46,9 +46,13 @@ PATTERNS("elixir",
|
||||
/* Not real operators, but should be grouped */
|
||||
"|:?%[A-Za-z0-9_.]\\{\\}?"),
|
||||
IPATTERN("fortran",
|
||||
/* Don't match comment lines */
|
||||
"!^([C*]|[ \t]*!)\n"
|
||||
/* Don't match 'module procedure' lines */
|
||||
"!^[ \t]*MODULE[ \t]+PROCEDURE[ \t]\n"
|
||||
/* Program, module, block data */
|
||||
"^[ \t]*((END[ \t]+)?(PROGRAM|MODULE|BLOCK[ \t]+DATA"
|
||||
/* Subroutines and functions */
|
||||
"|([^'\" \t]+[ \t]+)*(SUBROUTINE|FUNCTION))[ \t]+[A-Z].*)$",
|
||||
/* -- */
|
||||
"[a-zA-Z][a-zA-Z0-9_]*"
|
||||
|
Loading…
Reference in New Issue
Block a user