2017-02-20 Paul Thomas <pault@gcc.gnu.org>
[official-gcc.git] / gcc / testsuite / gfortran.dg / typebound_call_7.f03
blob7e7209c198a934e829b116c9a1b4386f800a2afe
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