------- Comment #2 from burnus at gcc dot gnu dot org 2008-07-27 07:23 ------- Currently, in interface.c's compare_parameter the checking is done via compare_interfaces. However, this function is used to check for problems with generic interfaces and from that point of view the two procedures are not distinguishable.
One way is to check is to add a loop as "else" branch and to check there for INTENT and OPTIONAL of each argument. This also allows for a better error message than the "Type/rank mismatch in argument". If actual-argument procedure itself takes procedures as argument, one can check recursively, which will be more work; I think for such kind of nesting no checking is done currently. (I thought that there was a PR already, but I cannot find it - maybe it does not exist.) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36947