| ! { dg-do compile } |
| ! |
| ! PR fortran/44350 |
| ! |
| ! Fortran 2008, C1116 only permits a small subset of statements in BLOCK DATA |
| ! |
| ! Part of the test case was contributed by Vittorio Zecca |
| ! |
| module m |
| end module m |
| |
| BLOCK DATA valid2 |
| use m |
| implicit integer(a-z) |
| intrinsic :: sin |
| common /one/ a, c |
| bind(C) :: /one/ |
| dimension c(5) |
| parameter (g = 7) |
| END BLOCK DATA valid2 |
| |
| BLOCK DATA valid |
| use m |
| implicit none |
| type t |
| sequence |
| end type t |
| type(t), save :: x |
| integer :: y |
| real :: q |
| save :: y |
| dimension :: q(5) |
| ! class(*) :: zz ! See PR fortran/58857 |
| ! pointer :: zz |
| target :: q |
| volatile y |
| asynchronous q |
| END BLOCK DATA valid |
| |
| block data invalid |
| common x |
| f(x)=x ! { dg-error "STATEMENT FUNCTION statement is not allowed inside of BLOCK DATA" } |
| interface ! { dg-error "INTERFACE statement is not allowed inside of BLOCK DATA" } |
| end interface |
| 1 format() ! { dg-error "FORMAT statement is not allowed inside of BLOCK DATA" } |
| end block invalid ! { dg-error "Expecting END BLOCK DATA statement" } |
| |
| ! { dg-error "Unexpected end of file" "" { target "*-*-*" } 0 } |