2017-12-08 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / gfortran.dg / allocate_derived_1.f90
blobd2c65ffa38bd790df3f5e71bd5c880937221588d
1 ! { dg-do compile }
3 ! ALLOCATE statements with derived type specification
5 ! Contributed by Janus Weil <janus@gcc.gnu.org>
7 type :: t1
8 integer :: i
9 end type
11 type, extends(t1) :: t2
12 real :: r
13 end type
15 type, extends(t2) :: t3
16 real :: q
17 end type
19 type, abstract :: u0
20 logical :: nothing
21 end type
23 type :: v1
24 real :: r
25 end type
27 class(t1),dimension(:),allocatable :: x
28 type(t2),dimension(:),allocatable :: y
29 class(t3),dimension(:),allocatable :: z
31 allocate( x(1))
32 allocate(t1 :: x(2))
33 allocate(t2 :: x(3))
34 allocate(t3 :: x(4))
35 allocate(tx :: x(5)) ! { dg-error "Error in type-spec at" }
36 allocate(u0 :: x(6)) ! { dg-error "may not be ABSTRACT" }
37 allocate(v1 :: x(7)) ! { dg-error "is type incompatible with typespec" }
39 allocate( y(1))
40 allocate(t1 :: y(2)) ! { dg-error "is type incompatible with typespec" }
41 allocate(t2 :: y(3))
42 allocate(t3 :: y(3)) ! { dg-error "is type incompatible with typespec" }
44 allocate( z(1))
45 allocate(t1 :: z(2)) ! { dg-error "is type incompatible with typespec" }
46 allocate(t2 :: z(3)) ! { dg-error "is type incompatible with typespec" }
47 allocate(t3 :: z(4))
49 end