xref: /llvm-project/flang/test/Semantics/call23.f90 (revision 514de38330abc2d17d8f15e333e5991c5a9d2b43)
1! RUN: %python %S/test_errors.py %s %flang_fc1
2! Check errors on MAX/MIN with keywords, a weird case in Fortran
3real :: x = 0.0, y = 0.0 , y1 = 0.0 ! prevent folding
4!ERROR: argument keyword 'a1=' was repeated in call to 'max'
5print *, max(a1=x,a1=1)
6!ERROR: keyword argument 'a1=' to intrinsic 'max' was supplied positionally by an earlier actual argument
7print *, max(x,a1=1)
8!ERROR: keyword argument 'a1=' to intrinsic 'min1' was supplied positionally by an earlier actual argument
9print *, min1(1.,a1=2.,a2=3.)
10print *, max(a1=x,a2=0,a4=0) ! ok
11print *, max(x,0,a99=0) ! ok
12!ERROR: argument keyword 'a06=' is not known in call to 'max'
13print *, max(a1=x,a2=0,a06=0)
14!ERROR: missing mandatory 'a2=' argument
15print *, max(a3=y, a1=x)
16!ERROR: missing mandatory 'a1=' argument
17print *, max(a3=y, a2=x)
18!ERROR: missing mandatory 'a1=' and 'a2=' arguments
19print *, max(a3=y, a4=x)
20!ERROR: missing mandatory 'a2=' argument
21print *, max(y1, a3=y)
22!ERROR: missing mandatory 'a1=' and 'a2=' arguments
23print *, max(a9=x, a5=y, a4=y1)
24!ERROR: missing mandatory 'a2=' argument
25print *, max(x)
26!ERROR: missing mandatory 'a2=' argument
27print *, max(a1=x)
28!ERROR: missing mandatory 'a1=' argument
29print *, max(a2=y)
30!ERROR: missing mandatory 'a1=' and 'a2=' arguments
31print *, max(a3=x)
32!ERROR: argument keyword 'a0=' is not known in call to 'max'
33print *, max(a0=x)
34!ERROR: argument keyword 'a03=' is not known in call to 'max'
35print *, max(a03=x)
36!ERROR: argument keyword 'abad=' is not known in call to 'max'
37print *, max(abad=x)
38!ERROR: actual argument #2 without a keyword may not follow an actual argument with a keyword
39print *, max(a1=x, y)
40!ERROR: Keyword argument 'a3=' has already been specified positionally (#3) in this procedure reference
41print *, max(x, y, y1, a3=x)
42print *, max(a3=x, a4=x, a2=x, a1=x) ! ok
43print *, max(a3=x, a2=y, a4=x, a1=x) ! ok
44print *, max(x, a2=y, a5=x, a4=x) ! ok
45print *, max(x, y, a4=x, a6=x) ! ok
46end
47