interface body has incorrect scope
0 answers - 1483 bytes -

Additional Comments From erik dot edelmann at iki dot fi 2005-07-27 13:00
(In reply to comment #7)
Subject: Re: interface body has incorrect scope
Paul, do you have any idea what find_special could be intended for? It seems
obvious that it does the wrong thing in the case of this PR, and I can't see
any case where it would be needed, but I would be surprised if there's no
intent behind it, and in another compiler the function is still present, does
the same thing, and is called in the same places. Are there maybe any other
changes in symbol handling compensating for this?
I've taken a look at "another compiler" (i.e. g95). The difference is in
(gfc|g95)_match_interface(). While we do
case INTERFACE_GENERIC:
<>
current_interface.sym = gfc_new_block = sym;
g95 does:
case INTERFACE_GENERIC:
<>
g95_new_block = NULL;
The result of this is that in find_special(), when we get to the point
if (s->state != CMP_INTERFACE || s->sym == NULL)
goto normal; /* Nameless interface */
(or corresponding point in gfortran source code), g95 will 'goto normal', while
we continue. In other words; g95 treats generic interfaces as nameless
interfaces. This brings me to a question: what is a "named interface"? I had
assumed that it would the same thing as a generic interface, but in g95 code it
is apperantly not.