OSDN Git Service

2011-08-18 Tobias Burnus <burnus@net-b.de>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gfortran.dg / associate_5.f03
1 ! { dg-do compile }
2 ! { dg-options "-std=f2003" }
3
4 ! PR fortran/38936
5 ! Check for errors with ASSOCIATE during resolution.
6
7 PROGRAM main
8   IMPLICIT NONE
9   INTEGER :: nontarget
10   INTEGER :: arr(3)
11   INTEGER, POINTER :: ptr
12
13   ASSOCIATE (a => 5) ! { dg-error "is used as array" }
14     PRINT *, a(3)
15   END ASSOCIATE
16
17   ASSOCIATE (a => nontarget)
18     ptr => a ! { dg-error "neither TARGET nor POINTER" }
19   END ASSOCIATE
20
21   ASSOCIATE (a => 5, b => arr((/ 1, 3 /)))
22     a = 4 ! { dg-error "variable definition context" }
23     b = 7 ! { dg-error "variable definition context" }
24     CALL test2 (a) ! { dg-error "variable definition context" }
25     CALL test2 (b) ! { dg-error "variable definition context" }
26   END ASSOCIATE
27
28 CONTAINS
29
30   SUBROUTINE test (x)
31     INTEGER, INTENT(IN) :: x
32     ASSOCIATE (y => x) ! { dg-error "variable definition context" }
33       y = 5 ! { dg-error "variable definition context" }
34       CALL test2 (x) ! { dg-error "variable definition context" }
35     END ASSOCIATE
36   END SUBROUTINE test
37
38   ELEMENTAL SUBROUTINE test2 (x)
39     INTEGER, INTENT(OUT) :: x
40     x = 5
41   END SUBROUTINE test2
42
43 END PROGRAM main