annotate gcc/testsuite/gfortran.dg/select_type_15.f03 @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents 84e7813d76e9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 ! { dg-do run }
kono
parents:
diff changeset
2 !
kono
parents:
diff changeset
3 ! PR 45420: [OOP] polymorphic TBP call in a CLASS DEFAULT clause
kono
parents:
diff changeset
4 !
kono
parents:
diff changeset
5 ! Contributed by Salvatore Filippone <salvatore.filippone@uniroma2.it>
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 module base_mat_mod
kono
parents:
diff changeset
9
kono
parents:
diff changeset
10 type :: base_sparse_mat
kono
parents:
diff changeset
11 contains
kono
parents:
diff changeset
12 procedure, pass(a) :: get_fmt => base_get_fmt
kono
parents:
diff changeset
13 end type base_sparse_mat
kono
parents:
diff changeset
14
kono
parents:
diff changeset
15 contains
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 function base_get_fmt(a) result(res)
kono
parents:
diff changeset
18 implicit none
kono
parents:
diff changeset
19 class(base_sparse_mat), intent(in) :: a
kono
parents:
diff changeset
20 character(len=5) :: res
kono
parents:
diff changeset
21 res = 'NULL'
kono
parents:
diff changeset
22 end function base_get_fmt
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 end module base_mat_mod
kono
parents:
diff changeset
25
kono
parents:
diff changeset
26
kono
parents:
diff changeset
27 module d_base_mat_mod
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 use base_mat_mod
kono
parents:
diff changeset
30
kono
parents:
diff changeset
31 type, extends(base_sparse_mat) :: d_base_sparse_mat
kono
parents:
diff changeset
32 contains
kono
parents:
diff changeset
33 procedure, pass(a) :: get_fmt => d_base_get_fmt
kono
parents:
diff changeset
34 end type d_base_sparse_mat
kono
parents:
diff changeset
35
kono
parents:
diff changeset
36 type, extends(d_base_sparse_mat) :: x_base_sparse_mat
kono
parents:
diff changeset
37 contains
kono
parents:
diff changeset
38 procedure, pass(a) :: get_fmt => x_base_get_fmt
kono
parents:
diff changeset
39 end type x_base_sparse_mat
kono
parents:
diff changeset
40
kono
parents:
diff changeset
41 contains
kono
parents:
diff changeset
42
kono
parents:
diff changeset
43 function d_base_get_fmt(a) result(res)
kono
parents:
diff changeset
44 implicit none
kono
parents:
diff changeset
45 class(d_base_sparse_mat), intent(in) :: a
kono
parents:
diff changeset
46 character(len=5) :: res
kono
parents:
diff changeset
47 res = 'DBASE'
kono
parents:
diff changeset
48 end function d_base_get_fmt
kono
parents:
diff changeset
49
kono
parents:
diff changeset
50 function x_base_get_fmt(a) result(res)
kono
parents:
diff changeset
51 implicit none
kono
parents:
diff changeset
52 class(x_base_sparse_mat), intent(in) :: a
kono
parents:
diff changeset
53 character(len=5) :: res
kono
parents:
diff changeset
54 res = 'XBASE'
kono
parents:
diff changeset
55 end function x_base_get_fmt
kono
parents:
diff changeset
56
kono
parents:
diff changeset
57 end module d_base_mat_mod
kono
parents:
diff changeset
58
kono
parents:
diff changeset
59
kono
parents:
diff changeset
60 program bug20
kono
parents:
diff changeset
61 use d_base_mat_mod
kono
parents:
diff changeset
62 class(d_base_sparse_mat), allocatable :: a
kono
parents:
diff changeset
63
kono
parents:
diff changeset
64 allocate(x_base_sparse_mat :: a)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
65 if (a%get_fmt()/="XBASE") STOP 1
111
kono
parents:
diff changeset
66
kono
parents:
diff changeset
67 select type(a)
kono
parents:
diff changeset
68 type is (d_base_sparse_mat)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
69 STOP 2
111
kono
parents:
diff changeset
70 class default
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
71 if (a%get_fmt()/="XBASE") STOP 3
111
kono
parents:
diff changeset
72 end select
kono
parents:
diff changeset
73
kono
parents:
diff changeset
74 end program bug20