1! { dg-do compile }
2! Tests the fix for elemental functions not being allowed in
3! specification expressions in pure procedures.
4!
5! Testcase from iso_varying_string by Rich Townsend <rhdt@star.ucl.ac.uk>
6! The allocatable component has been changed to a pointer for this testcase.
7!
8module iso_varying_string
9
10  type varying_string
11     private
12     character(LEN=1), dimension(:), pointer :: chars
13  end type varying_string
14
15  interface len
16     module procedure len_
17  end interface len
18
19contains
20
21  pure function char_auto (string) result (char_string)
22    type(varying_string), intent(in) :: string
23    character(LEN=len(string))       :: char_string ! Error was here
24    char_string = ""
25  end function char_auto
26
27  elemental function len_ (string) result (length)
28    type(varying_string), intent(in) :: string
29    integer                          :: length
30    length = 1
31  end function len_
32
33end module iso_varying_string
34