http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54107



--- Comment #17 from Mikael Morin <mikael at gcc dot gnu.org> 2013-01-26 
22:47:28 UTC ---

(In reply to comment #14)

> > Are procedure dummy arguments mutually exclusive with non-NULL procedure

> > interface, so that there is no dummy ambiguity in the array spec and char

> > length?

> 

> I'm not sure I understand the question. You can certainly declare dummy

> procedures with the PROCEDURE statement (so that they get a ts.interface).

> Still, I don't see how this could create ambiguities with the as or cl. Or are

> you talking about something like this:

> 

> procedure(some_interface) :: proc

> integer(4) :: proc

> 

No, I was thinking of C-like forward declaration:



interface

  function some_interface(ifc_arg)

     [...]

end interface



procedure(some_interface) :: proc



[...]



! Now the actual function

function proc (arg)

[...]





That doesn't feel right this way, but I was wondering whether there was a way

for a procedure like `proc' above to have dummy arguments both directly (`arg')

and through the interface (`ifc_arg').  Then the array spec could use either

`arg' or `ifc_arg' depending on how parsing/resolution is done (which would be

bad).





> > > It fixes comment #0, but fails with a very strange backtrace on comment 4:

> > 

> > It seems to be an infinite recursion in gfc_get_function_type:

> > 

> So, do you have an idea how to escape this infinite recursion?



Hum, no.  I thought we could use temporarily NULL_TREE in the argument type

list, which would be fixed just after the type is known.  That would work for

foo->foo recursion, but not for foo->bar->foo.

I guess we'll have to bypass build_function_type completely, and use

error_mark_node or something ad hoc to prevent infinite recursion, like it's

done in gfc_nonrestricted_type.

Reply via email to