mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-05 21:31:08 -06:00
In commit695f0d0d3a(cmFortranParser: Parse keywords as lexical tokens, 2016-09-05, v3.7.0-rc1~150^2) we created keyword-specific variants of the original `USE WORD other EOSTMT` production, such as `MODULE WORD other EOSTMT` and `INTERFACE WORD other EOSTMT`. The same pattern was used by more keyword-specific productions in commitb5ac8b8aa7(Fortran: Add support for submodule syntax in dependency scanning, 2016-09-05, v3.7.0-rc1~73^2~1). The postfix part (`other`) of several keyword-specific productions is not needed to match Fortran syntax. See the Fortran 2018 standard, para.4.1.4/1 on p.28, para.14.2.1/2 on pp.293-294. The postfix is needed only for a case of operator 'use': use <module-name> [, only : <list-of-vars>] The unnecessary postfix matching from the keyword-specific productions such as module, submodule, and interface declarations can cause spurious module dependencies to be detected, so remove it. Extend the test suite with examples covering the previously-broken cases. Fixes: #18427
25 lines
452 B
CMake
25 lines
452 B
CMake
# The program units in this file consist of a module/submodule
|
|
# tree represented by the following graph:
|
|
#
|
|
# parent
|
|
# |
|
|
# / \
|
|
# / \
|
|
# child sibling
|
|
# |
|
|
# grandchild
|
|
# |
|
|
# GreatGrandChild
|
|
#
|
|
# where the parent node is a module and all other nodes are submodules.
|
|
|
|
add_executable(submod
|
|
main.f90
|
|
parent.f90
|
|
obfuscated_parent.f90
|
|
child.f90
|
|
grandchild.f90
|
|
greatgrandchild.f90
|
|
sibling.f90
|
|
)
|