| ! { dg-do compile } |
| ! { dg-options "-std=legacy" } |
| ! We want to check for statement functions, thus legacy mode. |
| |
| ! Check for errors with declarations not allowed within BLOCK. |
| |
| SUBROUTINE proc (a) |
| IMPLICIT NONE |
| INTEGER :: a |
| |
| BLOCK |
| INTENT(IN) :: a ! { dg-error "not allowed inside of BLOCK" } |
| VALUE :: a ! { dg-error "not allowed inside of BLOCK" } |
| OPTIONAL :: a ! { dg-error "not allowed inside of BLOCK" } |
| END BLOCK |
| END SUBROUTINE proc |
| |
| PROGRAM main |
| IMPLICIT NONE |
| |
| BLOCK |
| IMPLICIT INTEGER(a-z) ! { dg-error "not allowed inside of BLOCK" } |
| INTEGER :: a, b, c, d |
| INTEGER :: stfunc |
| stfunc(a, b) = a + b ! { dg-error "not allowed inside of BLOCK" } |
| EQUIVALENCE (a, b) ! { dg-error "not allowed inside of BLOCK" } |
| NAMELIST /NLIST/ a, b ! { dg-error "not allowed inside of BLOCK" } |
| COMMON /CBLOCK/ c, d ! { dg-error "not allowed inside of BLOCK" } |
| ! This contains is in the specification part. |
| CONTAINS ! { dg-error "Unexpected CONTAINS statement" } |
| END BLOCK |
| |
| BLOCK |
| PRINT *, "Hello, world" |
| ! This one in the executable statement part. |
| CONTAINS ! { dg-error "Unexpected CONTAINS statement" } |
| END BLOCK |
| END PROGRAM main |