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