OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gfortran.dg/] [typebound_operator_6.f03] - Blame information for rev 704

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 694 jeremybenn
! { dg-do run }
2
!
3
! PR 45961: [4.6 Regression] [OOP] Problem with polymorphic type-bound operators
4
!
5
! Contributed by Mark Rashid 
6
 
7
MODULE DAT_MOD
8
 
9
  TYPE :: DAT
10
    INTEGER :: NN
11
  CONTAINS
12
    PROCEDURE :: LESS_THAN
13
    GENERIC :: OPERATOR (.LT.) => LESS_THAN
14
  END TYPE DAT
15
 
16
CONTAINS
17
 
18
  LOGICAL FUNCTION LESS_THAN(A, B)
19
    CLASS (DAT), INTENT (IN) :: A, B
20
    LESS_THAN = (A%NN .LT. B%NN)
21
  END FUNCTION LESS_THAN
22
 
23
END MODULE DAT_MOD
24
 
25
 
26
MODULE NODE_MOD
27
  USE DAT_MOD
28
 
29
  TYPE NODE
30
    INTEGER :: KEY
31
    CLASS (DAT), POINTER :: PT
32
  CONTAINS
33
    PROCEDURE :: LST
34
    GENERIC :: OPERATOR (.LT.) => LST
35
  END TYPE NODE
36
 
37
CONTAINS
38
 
39
  LOGICAL FUNCTION LST(A, B)
40
    CLASS (NODE), INTENT (IN) :: A, B
41
    IF (A%KEY .GT. 0 .AND. B%KEY .GT. 0) THEN
42
      LST = (A%KEY .LT. B%KEY)
43
    ELSE
44
      LST = (A%PT .LT. B%PT)
45
    END IF
46
  END FUNCTION LST
47
 
48
END MODULE NODE_MOD
49
 
50
 
51
PROGRAM TEST
52
  USE NODE_MOD
53
  IMPLICIT NONE
54
 
55
  CLASS (DAT), POINTER :: POINTA => NULL(), POINTB => NULL()
56
  CLASS (NODE), POINTER :: NDA => NULL(), NDB => NULL()
57
 
58
  ALLOCATE (DAT :: POINTA)
59
  ALLOCATE (DAT :: POINTB)
60
  ALLOCATE (NODE :: NDA)
61
  ALLOCATE (NODE :: NDB)
62
 
63
  POINTA%NN = 5
64
  NDA%PT => POINTA
65
  NDA%KEY = 2
66
  POINTB%NN = 10
67
  NDB%PT => POINTB
68
  NDB%KEY = 3
69
 
70
  if (.NOT. NDA .LT. NDB) call abort()
71
END
72
 
73
! { dg-final { cleanup-modules "dat_mod node_mod" } }

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.