rt_gccstream/gcc/testsuite/gfortran.dg/typebound_call_7.f03

51 lines
1011 B
Fortran

! { dg-do compile }
! PR fortran/37429
! Checks for assignments from type-bound functions.
MODULE touching
IMPLICIT NONE
TYPE :: EqnSys33
CONTAINS
PROCEDURE, NOPASS :: solve1
PROCEDURE, NOPASS :: solve2
PROCEDURE, NOPASS :: solve3
END TYPE EqnSys33
CONTAINS
FUNCTION solve1 ()
IMPLICIT NONE
REAL :: solve1(3)
solve1 = 0.0
END FUNCTION solve1
CHARACTER(len=5) FUNCTION solve2 ()
IMPLICIT NONE
solve2 = "hello"
END FUNCTION solve2
REAL FUNCTION solve3 ()
IMPLICIT NONE
solve3 = 4.2
END FUNCTION solve3
SUBROUTINE fill_gap ()
IMPLICIT NONE
TYPE(EqnSys33) :: sys
REAL :: res
REAL :: resArr(3), resSmall(2)
res = sys%solve1 () ! { dg-error "Incompatible rank" }
res = sys%solve2 () ! { dg-error "Can't convert" }
resSmall = sys%solve1 () ! { dg-error "Different shape" }
res = sys%solve3 ()
resArr = sys%solve1 ()
END SUBROUTINE fill_gap
END MODULE touching
! { dg-final { cleanup-modules "touching" } }