http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52365
Tobias Burnus <burnus at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |burnus at gcc dot gnu.org
--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-02-24
11:16:09 UTC ---
Note: I think the following variant is valid, where the symbol is in the same
interface block. (Correctly accepted.)
interface
subroutine foo()
end subroutine foo
subroutine bar(x)
procedure(foo) :: x
end subroutine bar
end interface
end
While the following variant is also invalid (but accepted):
module m
interface
subroutine bar(x)
procedure(foo) :: x
end subroutine bar
end interface
contains
subroutine foo()
end subroutine foo
end
Hence, a simple check in decl.c is not possible as it will come too early for
the second example. Still, some check should probably added to decl.c's
match_procedure_interface - similarly to the
gfc_current_ns->proc_name->attr.if_source == IFSRC_IFBODY
check in variable_decl.
Another check should be done at resolve_procedure_interface - or possibly the
only check, if one modifies the way where the decl is declared for
IFSRC_IFBODY.