RISC-V: Refactor Dynamic LMUL codes
[official-gcc.git] / gcc / testsuite / gfortran.dg / class_array_9.f03
blobc0f267c47fc488a5ac2131eea5ad11aca15ce5fe
1 ! { dg-do run }
2 ! Test typebound elemental functions on class arrays
4 module m
5   type :: t1
6     integer :: i
7   contains
8     procedure, pass :: disp => disp_t1
9   end type t1
11   type, extends(t1) :: t2
12     real :: r
13   contains
14     procedure, pass :: disp => disp_t2
15   end type t2
17 contains
18   integer elemental function disp_t1 (q)
19     class(t1), intent(in) :: q
20     disp_t1 = q%i
21   end function
23   integer elemental function disp_t2 (q)
24     class(t2), intent(in) :: q
25     disp_t2 = int (q%r)
26   end function
27 end module
29   use m
30   class(t1), allocatable :: x(:)
31   allocate (x(4), source = [(t1 (i), i=1,4)])
32   if (any (x%disp () .ne. [1,2,3,4])) STOP 1
33   if (any (x(2:3)%disp () .ne. [2,3])) STOP 2
34   if (any (x(4:3:-1)%disp () .ne. [4,3])) STOP 3
35   if (x(4)%disp () .ne. 4) STOP 4
37   deallocate (x)
38   allocate (x(4), source = [(t2 (2 * i, real (i) + 0.333), i=1,4)])
39   if (any (x%disp () .ne. [1,2,3,4])) STOP 5
40   if (any (x(2:3)%disp () .ne. [2,3])) STOP 6
41   if (any (x(4:3:-1)%disp () .ne. [4,3])) STOP 7
42   if (x(4)%disp () .ne. 4) STOP 8
44 end