$ cat bug3.f90
module mod1
  type my_type
    integer i
  end type my_type
end module mod1
module mod2
  use mod1, only: mod1_type => my_type
  interface
    function my_func1()
      import mod1_type
      type(mod1_type) :: my_func1
    end function my_func1
    type(mod1_type) function my_func2()
      import mod1_type
    end function my_func2
  end interface
end module mod2

$ /usr/local/gfortran/bin/gfortran -c bug3.f90 | & more
bug3.f90:13.4:

    type(mod1_type) function my_func2()
    1
Error: The type for function 'my_func2' at (1) is not accessible

This only happens for a USE-renamed derived-type, when the function return is a
derived type declared in the specification expression, as in my_func2. If the
mod1 type is used without renaming, both forms are accepted.

This may be related to bug41370, which is about a similar issue for character
length expressions in the return type.


-- 
           Summary:  Function return-type declaration with specification
                    expression rejected for renamed derived types
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: jkrahn at nc dot rr dot com


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

Reply via email to