annotate gcc/testsuite/gfortran.dg/typebound_operator_6.f03 @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +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 45961: [4.6 Regression] [OOP] Problem with polymorphic type-bound operators
kono
parents:
diff changeset
4 !
kono
parents:
diff changeset
5 ! Contributed by Mark Rashid <mmrashid@ucdavis.edu>
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 MODULE DAT_MOD
kono
parents:
diff changeset
8
kono
parents:
diff changeset
9 TYPE :: DAT
kono
parents:
diff changeset
10 INTEGER :: NN
kono
parents:
diff changeset
11 CONTAINS
kono
parents:
diff changeset
12 PROCEDURE :: LESS_THAN
kono
parents:
diff changeset
13 GENERIC :: OPERATOR (.LT.) => LESS_THAN
kono
parents:
diff changeset
14 END TYPE DAT
kono
parents:
diff changeset
15
kono
parents:
diff changeset
16 CONTAINS
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 LOGICAL FUNCTION LESS_THAN(A, B)
kono
parents:
diff changeset
19 CLASS (DAT), INTENT (IN) :: A, B
kono
parents:
diff changeset
20 LESS_THAN = (A%NN .LT. B%NN)
kono
parents:
diff changeset
21 END FUNCTION LESS_THAN
kono
parents:
diff changeset
22
kono
parents:
diff changeset
23 END MODULE DAT_MOD
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25
kono
parents:
diff changeset
26 MODULE NODE_MOD
kono
parents:
diff changeset
27 USE DAT_MOD
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 TYPE NODE
kono
parents:
diff changeset
30 INTEGER :: KEY
kono
parents:
diff changeset
31 CLASS (DAT), POINTER :: PT
kono
parents:
diff changeset
32 CONTAINS
kono
parents:
diff changeset
33 PROCEDURE :: LST
kono
parents:
diff changeset
34 GENERIC :: OPERATOR (.LT.) => LST
kono
parents:
diff changeset
35 END TYPE NODE
kono
parents:
diff changeset
36
kono
parents:
diff changeset
37 CONTAINS
kono
parents:
diff changeset
38
kono
parents:
diff changeset
39 LOGICAL FUNCTION LST(A, B)
kono
parents:
diff changeset
40 CLASS (NODE), INTENT (IN) :: A, B
kono
parents:
diff changeset
41 IF (A%KEY .GT. 0 .AND. B%KEY .GT. 0) THEN
kono
parents:
diff changeset
42 LST = (A%KEY .LT. B%KEY)
kono
parents:
diff changeset
43 ELSE
kono
parents:
diff changeset
44 LST = (A%PT .LT. B%PT)
kono
parents:
diff changeset
45 END IF
kono
parents:
diff changeset
46 END FUNCTION LST
kono
parents:
diff changeset
47
kono
parents:
diff changeset
48 END MODULE NODE_MOD
kono
parents:
diff changeset
49
kono
parents:
diff changeset
50
kono
parents:
diff changeset
51 PROGRAM TEST
kono
parents:
diff changeset
52 USE NODE_MOD
kono
parents:
diff changeset
53 IMPLICIT NONE
kono
parents:
diff changeset
54
kono
parents:
diff changeset
55 CLASS (DAT), POINTER :: POINTA => NULL(), POINTB => NULL()
kono
parents:
diff changeset
56 CLASS (NODE), POINTER :: NDA => NULL(), NDB => NULL()
kono
parents:
diff changeset
57
kono
parents:
diff changeset
58 ALLOCATE (DAT :: POINTA)
kono
parents:
diff changeset
59 ALLOCATE (DAT :: POINTB)
kono
parents:
diff changeset
60 ALLOCATE (NODE :: NDA)
kono
parents:
diff changeset
61 ALLOCATE (NODE :: NDB)
kono
parents:
diff changeset
62
kono
parents:
diff changeset
63 POINTA%NN = 5
kono
parents:
diff changeset
64 NDA%PT => POINTA
kono
parents:
diff changeset
65 NDA%KEY = 2
kono
parents:
diff changeset
66 POINTB%NN = 10
kono
parents:
diff changeset
67 NDB%PT => POINTB
kono
parents:
diff changeset
68 NDB%KEY = 3
kono
parents:
diff changeset
69
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
70 if (.NOT. NDA .LT. NDB) STOP 1
111
kono
parents:
diff changeset
71 END