| ! { dg-do compile } |
| ! |
| ! PR fortran/41869 |
| ! |
| ! Was ICEing while module write of symbol 'vs_str' in m_dom_dom |
| ! because of "len" being private in fox_m_fsys_format. |
| ! |
| module fox_m_fsys_array_str |
| contains |
| pure function str_vs(vs) result(s) |
| character, dimension(:), intent(in) :: vs |
| character(len=size(vs)) :: s |
| s = transfer(vs, s) |
| end function str_vs |
| pure function vs_str(s) result(vs) |
| character(len=*), intent(in) :: s |
| character, dimension(len(s)) :: vs |
| vs = transfer(s, vs) |
| end function vs_str |
| end module fox_m_fsys_array_str |
| |
| module fox_m_fsys_format |
| private |
| interface str |
| module procedure str_logical_array |
| end interface str |
| interface len |
| module procedure str_logical_array_len |
| end interface |
| public :: str |
| contains |
| pure function str_logical_array_len(la) result(n) |
| logical, dimension(:), intent(in) :: la |
| end function str_logical_array_len |
| pure function str_logical_array(la) result(s) |
| logical, dimension(:), intent(in) :: la |
| character(len=len(la)) :: s |
| end function str_logical_array |
| pure function checkFmt(fmt) result(good) |
| character(len=*), intent(in) :: fmt |
| logical :: good |
| good = len(fmt) > 0 |
| end function checkFmt |
| end module fox_m_fsys_format |
| |
| module m_dom_dom |
| use fox_m_fsys_array_str, only: str_vs, vs_str |
| end module m_dom_dom |
| |
| module FoX_dom |
| use fox_m_fsys_format |
| use m_dom_dom |
| end module FoX_dom |
| |
| use FoX_dom |
| implicit none |
| print *, vs_str("ABC") |
| end |