2015-07-03 Christophe Lyon <christophe.lyon@linaro.org>
[official-gcc.git] / gcc / testsuite / gfortran.dg / coarray_poly_3.f90
blobfd46206ea15273ceeedf19a6a61ff8a42819fb1e
1 ! { dg-do compile }
2 ! { dg-options "-fcoarray=single" }
6 subroutine cont1(x) ! { dg-error "has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape or assumed-rank array" }
7 type t
8 end type t
9 class(t), contiguous, allocatable :: x(:)
10 end
12 subroutine cont2(x) ! { dg-error "has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape or assumed-rank array" }
13 type t
14 end type t
15 class(t), contiguous, allocatable :: x(:)[:]
16 end
18 subroutine cont3(x, y)
19 type t
20 end type t
21 class(t), contiguous, pointer :: x(:)
22 class(t), contiguous :: y(:)
23 end
25 function func() ! { dg-error "shall not be a coarray or have a coarray component" }
26 type t
27 end type t
28 class(t), allocatable :: func[*]
29 end
31 function func2() ! { dg-error "must be dummy, allocatable or pointer" }
32 type t
33 integer, allocatable :: caf[:]
34 end type t
35 class(t) :: func2a ! { dg-error "CLASS variable 'func2a' at .1. must be dummy, allocatable or pointer" }
36 class(t) :: func2
37 end
39 subroutine foo1(x1) ! { dg-error "Coarray variable 'x1' at .1. shall not have codimensions with deferred shape" }
40 type t
41 end type t
42 type(t) :: x1(:)[:]
43 end
45 subroutine foo2(x2) ! { dg-error "Coarray variable 'x2' at .1. shall not have codimensions with deferred shape" }
46 type t
47 end type t
48 type(t) :: x2[:]
49 end
52 ! DITTO FOR CLASS
54 subroutine foo3(x1) ! { dg-error "Coarray variable 'x1' at .1. shall not have codimensions with deferred shape" }
55 type t
56 end type t
57 class(t) :: x1(:)[:]
58 end
60 subroutine foo4(x2) ! { dg-error "Coarray variable 'x2' at .1. shall not have codimensions with deferred shape" }
61 type t
62 end type t
63 class(t) :: x2[:]
64 end
69 subroutine bar1(y1) ! { dg-error "Allocatable coarray variable 'y1' at .1. must have deferred shape" }
70 type t
71 end type t
72 type(t), allocatable :: y1(:)[5:*]
73 end
75 subroutine bar2(y2) ! { dg-error "Allocatable coarray variable 'y2' at .1. must have deferred shape" }
76 type t
77 end type t
78 type(t), allocatable :: y2[5:*]
79 end
81 subroutine bar3(z1) ! { dg-error "Allocatable coarray variable 'z1' at .1. must have deferred shape" }
82 type t
83 end type t
84 type(t), allocatable :: z1(5)[:]
85 end
87 subroutine bar4(z2) ! { dg-error "Allocatable array 'z2' at .1. must have a deferred shape" }
88 type t
89 end type t
90 type(t), allocatable :: z2(5)
91 end subroutine bar4
93 subroutine bar5(z3) ! { dg-error "Array pointer 'z3' at .1. must have a deferred shape" }
94 type t
95 end type t
96 type(t), pointer :: z3(5)
97 end subroutine bar5
102 ! DITTO FOR CLASS
104 subroutine bar1c(y1) ! { dg-error "Allocatable coarray variable 'y1' at .1. must have deferred shape" }
105 type t
106 end type t
107 class(t), allocatable :: y1(:)[5:*]
110 subroutine bar2c(y2) ! { dg-error "Allocatable coarray variable 'y2' at .1. must have deferred shape" }
111 type t
112 end type t
113 class(t), allocatable :: y2[5:*]
116 subroutine bar3c(z1) ! { dg-error "Allocatable coarray variable 'z1' at .1. must have deferred shape" }
117 type t
118 end type t
119 class(t), allocatable :: z1(5)[:]
122 subroutine bar4c(z2) ! { dg-error "Allocatable array 'z2' at .1. must have a deferred shape" }
123 type t
124 end type t
125 class(t), allocatable :: z2(5)
126 end subroutine bar4c
128 subroutine bar5c(z3) ! { dg-error "Array pointer 'z3' at .1. must have a deferred shape" }
129 type t
130 end type t
131 class(t), pointer :: z3(5)
132 end subroutine bar5c
135 subroutine sub()
136 type t
137 end type
138 type(t) :: a(5)
139 class(t), allocatable :: b(:)
140 call inter(a)
141 call inter(b)
142 contains
143 subroutine inter(x)
144 class(t) :: x(5)
145 end subroutine inter
146 end subroutine sub
148 subroutine sub2()
149 type t
150 end type
151 type(t) :: a(5)
152 contains
153 subroutine inter(x)
154 class(t) :: x(5)
155 end subroutine inter
156 end subroutine sub2
158 subroutine sub3()
159 type t
160 end type
161 contains
162 subroutine inter2(x) ! { dg-error "must have a deferred shape" }
163 class(t), pointer :: x(5)
164 end subroutine inter2
165 end subroutine sub3