3 ! associated_target_7.f90: Test the fix for PR98565.
5 ! Contributed by Yves Secretan <yves.secretan@ete.inrs.ca>
12 TYPE, PUBLIC :: DT_GRID_T
18 TYPE, PUBLIC :: LM_ELEM_T
19 CLASS(DT_GRID_T), POINTER :: PGRID
21 PROCEDURE, PUBLIC :: REQPGRID => LM_ELEM_REGPGRID
24 TYPE, PUBLIC :: PS_SN0N_T
25 CLASS(DT_GRID_T), POINTER :: PGRID
28 PROCEDURE, PUBLIC :: ASGOELE => PS_SN0N_ASGOELE
33 !------------------------------------------------------------------------
34 !------------------------------------------------------------------------
35 FUNCTION LM_ELEM_REGPGRID(SELF) RESULT(PGRID)
36 CLASS(DT_GRID_T), POINTER :: PGRID
37 CLASS(LM_ELEM_T), INTENT(IN) :: SELF
40 END FUNCTION LM_ELEM_REGPGRID
42 !------------------------------------------------------------------------
43 !------------------------------------------------------------------------
44 FUNCTION PS_SN0N_ASGOELE(SELF, OELE) RESULT(ERMSG)
47 CLASS(PS_SN0N_T), INTENT(IN) :: SELF
48 CLASS(LM_ELEM_T), INTENT(IN) :: OELE
50 !CLASS(DT_GRID_T), POINTER :: PGRID
52 !------------------------------------------------------------------------
54 ! ASSOCIATED with temp variable compiles
55 !PGRID => OELE%REQPGRID()
56 !ISOK = ASSOCIATED(SELF%PGRID, PGRID)
58 ! ASSOCIATE without temp variable crashes with ICE
59 ISOK = ASSOCIATED(SELF%PGRID, OELE%REQPGRID())
64 END FUNCTION PS_SN0N_ASGOELE
70 CLASS(PS_SN0N_T), ALLOCATABLE :: SELF
71 CLASS(LM_ELEM_T), ALLOCATABLE :: OELE
72 TYPE (DT_GRID_T), TARGET :: GRID1 = DT_GRID_T (42)
73 TYPE (DT_GRID_T), TARGET :: GRID2 = DT_GRID_T (84)
75 ALLOCATE (PS_SN0N_T :: SELF)
76 ALLOCATE (LM_ELEM_T :: OELE)
80 IF (SELF%ASGOELE (OELE) .NE. 0) STOP 1
83 IF (SELF%ASGOELE (OELE) .NE. 0) STOP 2
86 IF (SELF%ASGOELE (OELE) .NE. 1) STOP 3