| ! { dg-do compile } |
| |
| ! Type-bound procedures |
| ! Check for recognition/errors with more complicated references and some |
| ! error-handling in general. |
| |
| MODULE m |
| IMPLICIT NONE |
| |
| TYPE t |
| CONTAINS |
| PROCEDURE, PASS :: proc |
| PROCEDURE, NOPASS :: func |
| END TYPE t |
| |
| TYPE compt |
| TYPE(t) :: myobj |
| END TYPE compt |
| |
| CONTAINS |
| |
| SUBROUTINE proc (me) |
| IMPLICIT NONE |
| CLASS(t), INTENT(INOUT) :: me |
| END SUBROUTINE proc |
| |
| INTEGER FUNCTION func () |
| IMPLICIT NONE |
| func = 1812 |
| END FUNCTION func |
| |
| SUBROUTINE test () |
| IMPLICIT NONE |
| TYPE(compt) :: arr(2) |
| |
| ! These two are OK. |
| CALL arr(1)%myobj%proc () |
| WRITE (*,*) arr(2)%myobj%func () |
| |
| ! Can't CALL a function or take the result of a SUBROUTINE. |
| CALL arr(1)%myobj%func () ! { dg-error "SUBROUTINE" } |
| WRITE (*,*) arr(2)%myobj%proc () ! { dg-error "FUNCTION" } |
| |
| ! Error. |
| CALL arr(2)%myobj%proc () x ! { dg-error "Junk after" } |
| WRITE (*,*) arr(1)%myobj%func ! { dg-error "Expected argument list" } |
| END SUBROUTINE test |
| |
| END MODULE m |