http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47136
--- Comment #6 from janus at gcc dot gnu.org 2011-01-02 15:19:10 UTC ---
(In reply to comment #5)
> > It
> > doesn't know OOP to test, but one could think that my initial example is
> > invalid after all?!
>
> I agree that it may be invalid, but one should check the exact wording in the
> standard.
Yes, after a look in the standard I would say that is invalid according to F08,
chapter 16.3.1, sentence #2:
"Within its scope, a local identifier of an entity of class (1) or class (4)
shall not be the same as a global identifier used in that scope unless [...]"
Class (1) contains all sorts of named variables and procedures, including
abstract interfaces. The exceptions which I elided in the above statement do
not apply. The only question is whether a module counts as "used" in it's own
scope, which I would answer with yes.
Therefore I think already the following reduction of comment #0 is invalid:
MODULE a
ABSTRACT INTERFACE
SUBROUTINE s()
END SUBROUTINE
END INTERFACE
END MODULE
MODULE s
USE a
END MODULE
Within the scope of module "a" everything is fine, since the module "s" is not
used. Within the scope of module "s", however, the subroutine "s" is a local
identifier (by means of use association) and conflicts with the global
identifier of module "s" itself. Right?