2010-12-20 Tobias Burnus <burnus@net-b.de>
[official-gcc.git] / gcc / testsuite / gfortran.dg / import2.f90
blob4a0128a0bf15968fb8c19028581280ca54b63534
1 ! { dg-do compile }
2 ! { dg-options "-std=f95" }
3 ! { dg-shouldfail "Fortran 2003 feature with -std=f95" }
4 ! Test whether import does not work with -std=f95
5 ! PR fortran/29601
7 subroutine test(x)
8 type myType3
9 sequence
10 integer :: i
11 end type myType3
12 type(myType3) :: x
13 if(x%i /= 7) call abort()
14 x%i = 1
15 end subroutine test
18 subroutine bar(x,y)
19 type myType
20 sequence
21 integer :: i
22 end type myType
23 type(myType) :: x
24 integer(8) :: y
25 if(y /= 8) call abort()
26 if(x%i /= 2) call abort()
27 x%i = 5
28 y = 42
29 end subroutine bar
31 module testmod
32 implicit none
33 integer, parameter :: kind = 8
34 type modType
35 real :: rv
36 end type modType
37 interface
38 subroutine other(x,y)
39 import ! { dg-error "Fortran 2003: IMPORT statement" }
40 type(modType) :: y ! { dg-error "not been declared within the interface" }
41 real(kind) :: x ! { dg-error "has not been declared" }
42 end subroutine
43 end interface
44 end module testmod
46 program foo
47 integer, parameter :: dp = 8
48 type myType
49 sequence
50 integer :: i
51 end type myType
52 type myType3
53 sequence
54 integer :: i
55 end type myType3
56 interface
57 subroutine bar(x,y)
58 import ! { dg-error "Fortran 2003: IMPORT statement" }
59 type(myType) :: x ! { dg-error "not been declared within the interface" }
60 integer(dp) :: y ! { dg-error "has not been declared" }
61 end subroutine bar
62 subroutine test(x)
63 import :: myType3 ! { dg-error "Fortran 2003: IMPORT statement" }
64 import myType3 ! { dg-error "Fortran 2003: IMPORT statement" }
65 type(myType3) :: x ! { dg-error "not been declared within the interface" }
66 end subroutine test
67 end interface
69 type(myType) :: y
70 type(myType3) :: z
71 integer(dp) :: i8
72 y%i = 2
73 i8 = 8
74 call bar(y,i8) ! { dg-error "Type mismatch in argument" }
75 if(y%i /= 5 .or. i8/= 42) call abort()
76 z%i = 7
77 call test(z) ! { dg-error "Type mismatch in argument" }
78 if(z%i /= 1) call abort()
79 end program foo
80 ! { dg-final { cleanup-modules "testmod" } }