[Geany-Devel] Fortran tags: 2 pull request
Dear Geany devs,
I have opened the two pull requests
https://github.com/geany/geany/pull/145
https://github.com/geany/geany/pull/146
that fix two problems with (modern) Fortran tag generation.
The problem addressed by the first PR concerns forall blocks. The
(secondary keyword) 'forall in 'end forall' was not interpreted as the
end of a forall block. Instead, 'end forall' is interpreted as the end
statement for higher level blocks. Compare the attached screenshots
forall_module.png and unproblematic_module.png (sources are also
atttached). You'll note that in the former the function two() shows as a
function that is not part of the module.
The second PR fixes tag generation for procedure pointers. Declarations
such as 'procedure(my_proc), pointer :: my_pointer' are now treated just
like declarations of e.g. a real variable. To illustrate what's going
wrong at the moment please compare procedure_pointer_module.f90 and
unproblematic_module.png. Note that in the former the pointer variable
'my_pointer' is missing in the symbol list.
The screenshot with_fixes.png shows the patched symbol browser for a
module that has both problematic constructs. The problems are gone.
I hope someone finds the time to review both PRs. Thanks!
Best regards
Alex





Dear Geany devs,
I have opened the two pull requests
https://github.com/geany/geany/pull/145
https://github.com/geany/geany/pull/146
that fix two problems with (modern) Fortran tag generation.
The problem addressed by the first PR concerns forall blocks. The
(secondary keyword) 'forall in 'end forall' was not interpreted as the
end of a forall block. Instead, 'end forall' is interpreted as the end
statement for higher level blocks. Compare the attached screenshots
forall_module.png and unproblematic_module.png (sources are also
atttached). You'll note that in the former the function two() shows as a
function that is not part of the module.
The second PR fixes tag generation for procedure pointers. Declarations
such as 'procedure(my_proc), pointer :: my_pointer' are now treated just
like declarations of e.g. a real variable. To illustrate what's going
wrong at the moment please compare procedure_pointer_module.f90 and
unproblematic_module.png. Note that in the former the pointer variable
'my_pointer' is missing in the symbol list.
The screenshot with_fixes.png shows the patched symbol browser for a
module that has both problematic constructs. The problems are gone.
I hope someone finds the time to review both PRs. Thanks!
Best regards
Alex