xref: /llvm-project/flang/test/Semantics/resolve119.f90 (revision b0cea8941cab913d9a811ac5331ae63a22ada03f)
1*b0cea894SPeter Klausler! RUN: %python %S/test_errors.py %s %flang_fc1
2*b0cea894SPeter Klausler! C815: an attribute may be applied at most once per scope
3*b0cea894SPeter Klauslermodule m
4*b0cea894SPeter Klausler  real a1, a2, v1, v2
5*b0cea894SPeter Klausler  asynchronous a1
6*b0cea894SPeter Klausler  asynchronous a2
7*b0cea894SPeter Klausler  !ERROR: ASYNCHRONOUS attribute was already specified on 'a2'
8*b0cea894SPeter Klausler  asynchronous a2
9*b0cea894SPeter Klausler  volatile v1
10*b0cea894SPeter Klausler  volatile v2
11*b0cea894SPeter Klausler  !ERROR: VOLATILE attribute was already specified on 'v2'
12*b0cea894SPeter Klausler  volatile v2
13*b0cea894SPeter Klausler contains
14*b0cea894SPeter Klausler  subroutine modsub
15*b0cea894SPeter Klausler    asynchronous a1
16*b0cea894SPeter Klausler    asynchronous a2
17*b0cea894SPeter Klausler    !ERROR: ASYNCHRONOUS attribute was already specified on 'a2'
18*b0cea894SPeter Klausler    asynchronous a2
19*b0cea894SPeter Klausler    volatile v1
20*b0cea894SPeter Klausler    volatile v2
21*b0cea894SPeter Klausler    !ERROR: VOLATILE attribute was already specified on 'v2'
22*b0cea894SPeter Klausler    volatile v2
23*b0cea894SPeter Klausler    block
24*b0cea894SPeter Klausler      asynchronous a1
25*b0cea894SPeter Klausler      asynchronous a2
26*b0cea894SPeter Klausler      !ERROR: ASYNCHRONOUS attribute was already specified on 'a2'
27*b0cea894SPeter Klausler      asynchronous a2
28*b0cea894SPeter Klausler      volatile v1
29*b0cea894SPeter Klausler      volatile v2
30*b0cea894SPeter Klausler      !ERROR: VOLATILE attribute was already specified on 'v2'
31*b0cea894SPeter Klausler      volatile v2
32*b0cea894SPeter Klausler    end block
33*b0cea894SPeter Klausler  end
34*b0cea894SPeter Klauslerend
35*b0cea894SPeter Klausler
36*b0cea894SPeter Klauslersubroutine s
37*b0cea894SPeter Klausler  use m
38*b0cea894SPeter Klausler  asynchronous a1
39*b0cea894SPeter Klausler  asynchronous a2
40*b0cea894SPeter Klausler  !ERROR: ASYNCHRONOUS attribute was already specified on 'a2'
41*b0cea894SPeter Klausler  asynchronous a2
42*b0cea894SPeter Klausler  volatile v1
43*b0cea894SPeter Klausler  volatile v2
44*b0cea894SPeter Klausler  !ERROR: VOLATILE attribute was already specified on 'v2'
45*b0cea894SPeter Klausler  volatile v2
46*b0cea894SPeter Klausler  block
47*b0cea894SPeter Klausler    asynchronous a1
48*b0cea894SPeter Klausler    asynchronous a2
49*b0cea894SPeter Klausler    !ERROR: ASYNCHRONOUS attribute was already specified on 'a2'
50*b0cea894SPeter Klausler    asynchronous a2
51*b0cea894SPeter Klausler    volatile v1
52*b0cea894SPeter Klausler    volatile v2
53*b0cea894SPeter Klausler    !ERROR: VOLATILE attribute was already specified on 'v2'
54*b0cea894SPeter Klausler    volatile v2
55*b0cea894SPeter Klausler  end block
56*b0cea894SPeter Klausler contains
57*b0cea894SPeter Klausler  subroutine internal
58*b0cea894SPeter Klausler    asynchronous a1
59*b0cea894SPeter Klausler    asynchronous a2
60*b0cea894SPeter Klausler    !ERROR: ASYNCHRONOUS attribute was already specified on 'a2'
61*b0cea894SPeter Klausler    asynchronous a2
62*b0cea894SPeter Klausler    volatile v1
63*b0cea894SPeter Klausler    volatile v2
64*b0cea894SPeter Klausler    !ERROR: VOLATILE attribute was already specified on 'v2'
65*b0cea894SPeter Klausler    volatile v2
66*b0cea894SPeter Klausler    block
67*b0cea894SPeter Klausler      asynchronous a1
68*b0cea894SPeter Klausler      asynchronous a2
69*b0cea894SPeter Klausler      !ERROR: ASYNCHRONOUS attribute was already specified on 'a2'
70*b0cea894SPeter Klausler      asynchronous a2
71*b0cea894SPeter Klausler      volatile v1
72*b0cea894SPeter Klausler      volatile v2
73*b0cea894SPeter Klausler      !ERROR: VOLATILE attribute was already specified on 'v2'
74*b0cea894SPeter Klausler      volatile v2
75*b0cea894SPeter Klausler    end block
76*b0cea894SPeter Klausler  end
77*b0cea894SPeter Klauslerend
78*b0cea894SPeter Klausler
79