1! { dg-do compile } 2! 3! PR fortran/41869 4! 5! Was ICEing while module write of symbol 'vs_str' in m_dom_dom 6! because of "len" being private in fox_m_fsys_format. 7! 8module fox_m_fsys_array_str 9contains 10 pure function str_vs(vs) result(s) 11 character, dimension(:), intent(in) :: vs 12 character(len=size(vs)) :: s 13 s = transfer(vs, s) 14 end function str_vs 15 pure function vs_str(s) result(vs) 16 character(len=*), intent(in) :: s 17 character, dimension(len(s)) :: vs 18 vs = transfer(s, vs) 19 end function vs_str 20end module fox_m_fsys_array_str 21 22module fox_m_fsys_format 23 private 24 interface str 25 module procedure str_logical_array 26 end interface str 27 interface len 28 module procedure str_logical_array_len 29 end interface 30 public :: str 31contains 32 pure function str_logical_array_len(la) result(n) 33 logical, dimension(:), intent(in) :: la 34 end function str_logical_array_len 35 pure function str_logical_array(la) result(s) 36 logical, dimension(:), intent(in) :: la 37 character(len=len(la)) :: s 38 end function str_logical_array 39 pure function checkFmt(fmt) result(good) 40 character(len=*), intent(in) :: fmt 41 logical :: good 42 good = len(fmt) > 0 43 end function checkFmt 44end module fox_m_fsys_format 45 46module m_dom_dom 47 use fox_m_fsys_array_str, only: str_vs, vs_str 48end module m_dom_dom 49 50module FoX_dom 51 use fox_m_fsys_format 52 use m_dom_dom 53end module FoX_dom 54 55use FoX_dom 56implicit none 57print *, vs_str("ABC") 58end 59