1! { dg-do compile } 2 3! Type-bound procedures 4! Check for recognition/errors with more complicated references and some 5! error-handling in general. 6 7MODULE m 8 IMPLICIT NONE 9 10 TYPE t 11 CONTAINS 12 PROCEDURE, PASS :: proc 13 PROCEDURE, NOPASS :: func 14 END TYPE t 15 16 TYPE compt 17 TYPE(t) :: myobj 18 END TYPE compt 19 20CONTAINS 21 22 SUBROUTINE proc (me) 23 IMPLICIT NONE 24 CLASS(t), INTENT(INOUT) :: me 25 END SUBROUTINE proc 26 27 INTEGER FUNCTION func () 28 IMPLICIT NONE 29 func = 1812 30 END FUNCTION func 31 32 SUBROUTINE test () 33 IMPLICIT NONE 34 TYPE(compt) :: arr(2) 35 36 ! These two are OK. 37 CALL arr(1)%myobj%proc () 38 WRITE (*,*) arr(2)%myobj%func () 39 40 ! Can't CALL a function or take the result of a SUBROUTINE. 41 CALL arr(1)%myobj%func () ! { dg-error "SUBROUTINE" } 42 WRITE (*,*) arr(2)%myobj%proc () ! { dg-error "FUNCTION" } 43 44 ! Error. 45 CALL arr(2)%myobj%proc () x ! { dg-error "Junk after" } 46 WRITE (*,*) arr(1)%myobj%func ! { dg-error "Expected argument list" } 47 END SUBROUTINE test 48 49END MODULE m 50