OSDN Git Service

2009-08-20 Thomas Koenig <tkoenig@gcc.gnu.org>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gfortran.dg / implicit_2.f90
1 ! { dg-do compile }
2
3 module implicit_2
4   ! This should cause an error if function types are resolved from the
5   ! module namespace.
6   implicit none
7   type t
8     integer i
9   end type
10 contains
11 ! This caused an ICE because we were trying to apply the implicit type
12 ! after we had applied the explicit type.
13 subroutine test()
14   implicit type (t) (v)
15   type (t) v1, v2
16   v1%i = 1
17   call foo (v2%i)
18 end subroutine
19
20 ! A similar error because we failed to apply the implicit type to a function.
21 ! This is a contained function to check we lookup the type in the function
22 ! namespace, not it's parent.
23 function f() result (val)
24   implicit type (t) (v)
25
26   val%i = 1
27 end function
28
29 ! And again for a result variable.
30 function fun()
31   implicit type (t) (f)
32
33   fun%i = 1
34 end function
35
36 ! intrinsic types are resolved later than derived type, so check those as well.
37 function test2()
38   implicit integer (t)
39   test2 = 42
40 end function
41 subroutine bar()
42   ! Check that implicit types are applied to names already known to be
43   ! variables.
44   implicit type(t) (v)
45   save v
46   v%i = 42
47 end subroutine
48 end module
49
50 ! { dg-final { cleanup-modules "implicit_2" } }