Commit r16-1633 introduced a regression for imported interfaces that were
not renamed-on-use, since the related logic did not take into account that
the absence of renaming could be represented by an empty string.
PR fortran/120784
gcc/fortran/ChangeLog:
* interface.cc (gfc_match_end_interface): Detect empty local_name.
gcc/testsuite/ChangeLog:
* gfortran.dg/interface_63.f90: Extend testcase.
if (current_interface.sym->attr.use_assoc
&& current_interface.sym->attr.use_rename
- && current_interface.sym->ns->use_stmts->rename)
+ && current_interface.sym->ns->use_stmts->rename
+ && (current_interface.sym->ns->use_stmts->rename->local_name[0]
+ != '\0'))
local_name = current_interface.sym->ns->use_stmts->rename->local_name;
if (type != current_interface.type
call myget (i)
call myget (r)
end
+
+! Check that we do not regress on the following:
+
+module mod1
+ implicit none
+
+ interface local
+ module procedure local_data
+ end interface local
+
+contains
+
+ logical function local_data (data) result (local)
+ real, intent(in) :: data
+ local = .true.
+ end function local_data
+
+end module mod1
+
+module mod2
+ use mod1, only: local
+ implicit none
+
+ interface local
+ module procedure local_invt
+ end interface local
+
+contains
+
+ logical function local_invt (invt) result (local)
+ integer, intent(in) :: invt
+ local = .true.
+ end function local_invt
+
+end module mod2