1! RUN: %S/test_errors.sh %s %t %flang_fc1
2! REQUIRES: shell
3! Check that if constructs only accept scalar logical expressions.
4! TODO: expand the test to check this restriction for more types.
5
6INTEGER :: I
7LOGICAL, DIMENSION (2) :: B
8
9!ERROR: Must be a scalar value, but is a rank-1 array
10if ( B ) then
11  a = 1
12end if
13
14!ERROR: Must be a scalar value, but is a rank-1 array
15if ( B ) then
16  a = 2
17else
18  a = 3
19endif
20
21!ERROR: Must be a scalar value, but is a rank-1 array
22if ( B ) then
23  a = 4
24!ERROR: Must be a scalar value, but is a rank-1 array
25else if( B ) then
26  a = 5
27end if
28
29!ERROR: Must be a scalar value, but is a rank-1 array
30if ( B ) then
31  a = 6
32!ERROR: Must be a scalar value, but is a rank-1 array
33else if( B ) then
34  a = 7
35!ERROR: Must be a scalar value, but is a rank-1 array
36elseif( B ) then
37  a = 8
38end if
39
40!ERROR: Must be a scalar value, but is a rank-1 array
41if ( B ) then
42  a = 9
43!ERROR: Must be a scalar value, but is a rank-1 array
44else if( B ) then
45  a = 10
46else
47  a = 11
48end if
49
50!ERROR: Must be a scalar value, but is a rank-1 array
51if ( B ) then
52  a = 12
53!ERROR: Must be a scalar value, but is a rank-1 array
54else if( B ) then
55  a = 13
56!ERROR: Must be a scalar value, but is a rank-1 array
57else if( B ) then
58  a = 14
59end if
60
61
62!ERROR: Must have LOGICAL type, but is INTEGER(4)
63if ( I ) then
64  a = 1
65end if
66
67!ERROR: Must have LOGICAL type, but is INTEGER(4)
68if ( I ) then
69  a = 2
70else
71  a = 3
72endif
73
74!ERROR: Must have LOGICAL type, but is INTEGER(4)
75if ( I ) then
76  a = 4
77!ERROR: Must have LOGICAL type, but is INTEGER(4)
78else if( I ) then
79  a = 5
80end if
81
82!ERROR: Must have LOGICAL type, but is INTEGER(4)
83if ( I ) then
84  a = 6
85!ERROR: Must have LOGICAL type, but is INTEGER(4)
86else if( I ) then
87  a = 7
88!ERROR: Must have LOGICAL type, but is INTEGER(4)
89elseif( I ) then
90  a = 8
91end if
92
93!ERROR: Must have LOGICAL type, but is INTEGER(4)
94if ( I ) then
95  a = 9
96!ERROR: Must have LOGICAL type, but is INTEGER(4)
97else if( I ) then
98  a = 10
99else
100  a = 11
101end if
102
103!ERROR: Must have LOGICAL type, but is INTEGER(4)
104if ( I ) then
105  a = 12
106!ERROR: Must have LOGICAL type, but is INTEGER(4)
107else if( I ) then
108  a = 13
109!ERROR: Must have LOGICAL type, but is INTEGER(4)
110else if( I ) then
111  a = 14
112end if
113
114!ERROR: Must have LOGICAL type, but is REAL(4)
115if (f()) then
116  a = 15
117end if
118
119contains
120  real function f()
121    f = 1.0
122  end
123end
124