fix pr/45972
[official-gcc.git] / gcc / testsuite / gfortran.dg / typebound_call_7.f03
blob03a1a51ccd4c078c0d89b65544e52dd001368c14
1 ! { dg-do compile }
3 ! PR fortran/37429
4 ! Checks for assignments from type-bound functions.
6 MODULE touching
7   IMPLICIT NONE
9   TYPE :: EqnSys33
10   CONTAINS
11     PROCEDURE, NOPASS :: solve1
12     PROCEDURE, NOPASS :: solve2
13     PROCEDURE, NOPASS :: solve3
14   END TYPE EqnSys33
16 CONTAINS
18   FUNCTION solve1 ()
19     IMPLICIT NONE
20     REAL :: solve1(3)
21     solve1 = 0.0
22   END FUNCTION solve1
24   CHARACTER(len=5) FUNCTION solve2 ()
25     IMPLICIT NONE
26     solve2 = "hello"
27   END FUNCTION solve2
29   REAL FUNCTION solve3 ()
30     IMPLICIT NONE
31     solve3 = 4.2
32   END FUNCTION solve3
34   SUBROUTINE fill_gap ()
35     IMPLICIT NONE
36     TYPE(EqnSys33) :: sys
37     REAL :: res
38     REAL :: resArr(3), resSmall(2)
40     res = sys%solve1 () ! { dg-error "Incompatible rank" }
41     res = sys%solve2 () ! { dg-error "Can't convert" }
42     resSmall = sys%solve1 () ! { dg-error "Different shape" }
44     res = sys%solve3 ()
45     resArr = sys%solve1 ()
46   END SUBROUTINE fill_gap
48 END MODULE touching
50 ! { dg-final { cleanup-modules "touching" } }