! { dg-do compile } ! { dg-options "-std=f2003" } ! PR fortran/38936 ! Check for errors with ASSOCIATE during resolution. PROGRAM main IMPLICIT NONE INTEGER :: nontarget INTEGER :: arr(3) INTEGER, POINTER :: ptr ASSOCIATE (a => 5) ! { dg-error "is used as array" } PRINT *, a(3) END ASSOCIATE ASSOCIATE (a => nontarget) ptr => a ! { dg-error "neither TARGET nor POINTER" } END ASSOCIATE ASSOCIATE (a => 5, b => arr((/ 1, 3 /))) a = 4 ! { dg-error "variable definition context" } b = 7 ! { dg-error "variable definition context" } CALL test2 (a) ! { dg-error "variable definition context" } CALL test2 (b) ! { dg-error "variable definition context" } END ASSOCIATE CONTAINS SUBROUTINE test (x) INTEGER, INTENT(IN) :: x ASSOCIATE (y => x) ! { dg-error "variable definition context" } y = 5 ! { dg-error "variable definition context" } CALL test2 (x) ! { dg-error "variable definition context" } END ASSOCIATE END SUBROUTINE test ELEMENTAL SUBROUTINE test2 (x) INTEGER, INTENT(OUT) :: x x = 5 END SUBROUTINE test2 END PROGRAM main