1! { dg-do compile }
2! Tests the fix for PR29634, in which an ICE would occur in the
3! interface declaration of a function with an 'old-style' type
4! declaration.  When fixed, it was found that the error message
5! was not very helpful - this was fixed.
6!
7! Contributed by Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
8!
9module kinds
10  type foo
11    integer :: i
12  end type foo
13end module
14
15type(foo) function ext_fun()
16  use kinds
17  ext_fun%i = 1
18end function ext_fun
19
20  use kinds
21
22  interface fun_interface
23    type(foo) function fun()
24      use kinds
25    end function fun
26  end interface
27
28  interface ext_fun_interface
29    type(foo) function ext_fun()
30      use kinds
31    end function ext_fun
32  end interface
33
34  type(foo) :: x
35
36  x = ext_fun ()
37  print *, x%i
38
39contains
40
41  type(foo) function fun() ! { dg-error "already has an explicit interface" }
42  end function fun  ! { dg-error "Expecting END PROGRAM" }
43
44end
45