The following is properly rejected but the error message is bogus: Error: Character-valued internal function 'assumed_len' at (1) must not be assumed length I tried to find an internal function, but all I see is a module procedure. (For internal functions, assumed-length result values are also invalid.) module funcs implicit none contains function assumed_len(x) character(*) assumed_len integer, intent(in) :: x end function assumed_len end module
Confirmed, I'll investigate what we can do here (and look at similar cases).
Subject: Bug 41615 Author: domob Date: Wed Oct 7 18:13:28 2009 New Revision: 152534 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=152534 Log: 2009-10-07 Daniel Kraft <d@domob.eu> PR fortran/41615 * resolve.c (resolve_contained_fntype): Clarify error message for invalid assumed-length character result on module procedures. 2009-10-07 Daniel Kraft <d@domob.eu> PR fortran/41615 * gfortran.dg/assumed_charlen_function_6.f90: New test. Added: trunk/gcc/testsuite/gfortran.dg/assumed_charlen_function_6.f90 Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/resolve.c trunk/gcc/testsuite/ChangeLog
Fixed on trunk, now the message really prints "module procedure" for module procedures.