149f3f976SKatherine Rasmussen! RUN: %python %S/test_errors.py %s %flang_fc1 249f3f976SKatherine Rasmussen! This test checks for semantic errors in atomic_fetch_xor subroutine calls based on 349f3f976SKatherine Rasmussen! the interface defined in section 16.9.27 of the Fortran 2018 standard. 449f3f976SKatherine Rasmussen 549f3f976SKatherine Rasmussenprogram test_atomic_fetch_xor 67aa09688SKatherine Rasmussen use iso_fortran_env, only: atomic_int_kind, atomic_logical_kind 7*512b44d5SPeter Klausler implicit none(external, type) 849f3f976SKatherine Rasmussen 949f3f976SKatherine Rasmussen integer(kind=atomic_int_kind) :: scalar_coarray[*], non_scalar_coarray(10)[*], val, old_val, non_coarray 1049f3f976SKatherine Rasmussen integer(kind=atomic_int_kind) :: repeated_atom[*], repeated_old, repeated_val, array(10) 117aa09688SKatherine Rasmussen integer :: status, default_kind_coarray[*], not_same_kind_as_atom, coindexed_status[*] 127aa09688SKatherine Rasmussen integer :: extra_arg, repeated_status, status_array(10) 1349f3f976SKatherine Rasmussen integer(kind=1) :: kind1_coarray[*] 1449f3f976SKatherine Rasmussen real :: non_integer_coarray[*], not_same_type_as_atom 1549f3f976SKatherine Rasmussen logical :: non_integer 167aa09688SKatherine Rasmussen logical(kind=atomic_logical_kind) :: atomic_logical[*], old_logical 1749f3f976SKatherine Rasmussen 1849f3f976SKatherine Rasmussen !___ standard-conforming calls ___ 1949f3f976SKatherine Rasmussen call atomic_fetch_xor(scalar_coarray, val, old_val) 2049f3f976SKatherine Rasmussen call atomic_fetch_xor(scalar_coarray[1], val, old_val) 2149f3f976SKatherine Rasmussen call atomic_fetch_xor(scalar_coarray, val, old_val, status) 2249f3f976SKatherine Rasmussen call atomic_fetch_xor(scalar_coarray[1], val, old_val, status) 2349f3f976SKatherine Rasmussen call atomic_fetch_xor(atom=scalar_coarray, value=val, old=old_val, stat=status) 2449f3f976SKatherine Rasmussen call atomic_fetch_xor(stat=status, old=old_val, value=val, atom=scalar_coarray) 2549f3f976SKatherine Rasmussen 2649f3f976SKatherine Rasmussen !___ non-standard-conforming calls ___ 2749f3f976SKatherine Rasmussen 287aa09688SKatherine Rasmussen !ERROR: Actual argument for 'atom=' has bad type 'LOGICAL(8)' 297aa09688SKatherine Rasmussen call atomic_fetch_xor(atomic_logical, val, old_logical) 307aa09688SKatherine Rasmussen 317aa09688SKatherine Rasmussen !ERROR: Actual argument for 'old=' has bad type 'LOGICAL(8)' 327aa09688SKatherine Rasmussen call atomic_fetch_xor(scalar_coarray, val, old_logical) 337aa09688SKatherine Rasmussen 347aa09688SKatherine Rasmussen !ERROR: 'atom=' argument must be a scalar coarray or coindexed object for intrinsic 'atomic_fetch_xor' 3549f3f976SKatherine Rasmussen call atomic_fetch_xor(non_scalar_coarray, val, old_val) 3649f3f976SKatherine Rasmussen 377aa09688SKatherine Rasmussen !ERROR: 'atom=' argument must be a scalar coarray or coindexed object for intrinsic 'atomic_fetch_xor' 3849f3f976SKatherine Rasmussen call atomic_fetch_xor(non_coarray, val, old_val) 3949f3f976SKatherine Rasmussen 407aa09688SKatherine Rasmussen !ERROR: 'atom=' argument must be a scalar coarray or coindexed object for intrinsic 'atomic_fetch_xor' 4149f3f976SKatherine Rasmussen call atomic_fetch_xor(array, val, old_val) 4249f3f976SKatherine Rasmussen 437aa09688SKatherine Rasmussen !ERROR: 'atom=' argument must be a scalar coarray or coindexed object for intrinsic 'atomic_fetch_xor' 447aa09688SKatherine Rasmussen call atomic_fetch_xor(non_scalar_coarray[1], val, old_val) 457aa09688SKatherine Rasmussen 4649f3f976SKatherine Rasmussen !ERROR: Actual argument for 'atom=' must have kind=atomic_int_kind, but is 'INTEGER(4)' 4749f3f976SKatherine Rasmussen call atomic_fetch_xor(default_kind_coarray, val, old_val) 4849f3f976SKatherine Rasmussen 4949f3f976SKatherine Rasmussen !ERROR: Actual argument for 'atom=' must have kind=atomic_int_kind, but is 'INTEGER(1)' 5049f3f976SKatherine Rasmussen call atomic_fetch_xor(kind1_coarray, val, old_val) 5149f3f976SKatherine Rasmussen 5249f3f976SKatherine Rasmussen !ERROR: Actual argument for 'atom=' has bad type 'REAL(4)' 5349f3f976SKatherine Rasmussen call atomic_fetch_xor(non_integer_coarray, val, old_val) 5449f3f976SKatherine Rasmussen 5549f3f976SKatherine Rasmussen !ERROR: 'value=' argument has unacceptable rank 1 5649f3f976SKatherine Rasmussen call atomic_fetch_xor(scalar_coarray, array, old_val) 5749f3f976SKatherine Rasmussen 5849f3f976SKatherine Rasmussen !ERROR: Actual argument for 'value=' has bad type 'LOGICAL(4)' 5949f3f976SKatherine Rasmussen call atomic_fetch_xor(scalar_coarray, non_integer, old_val) 6049f3f976SKatherine Rasmussen 6149f3f976SKatherine Rasmussen !ERROR: Actual argument for 'old=' must have kind=atomic_int_kind, but is 'INTEGER(4)' 6249f3f976SKatherine Rasmussen call atomic_fetch_xor(atom=scalar_coarray, value=val, old=not_same_kind_as_atom) 6349f3f976SKatherine Rasmussen 6449f3f976SKatherine Rasmussen !ERROR: Actual argument for 'old=' has bad type 'REAL(4)' 6549f3f976SKatherine Rasmussen call atomic_fetch_xor(atom=scalar_coarray, value=val, old=not_same_type_as_atom) 6649f3f976SKatherine Rasmussen 6749f3f976SKatherine Rasmussen !ERROR: Actual argument for 'old=' must have kind=atomic_int_kind, but is 'INTEGER(4)' 6849f3f976SKatherine Rasmussen call atomic_fetch_xor(scalar_coarray, val, 1) 6949f3f976SKatherine Rasmussen 7049f3f976SKatherine Rasmussen !ERROR: 'old=' argument has unacceptable rank 1 7149f3f976SKatherine Rasmussen call atomic_fetch_xor(scalar_coarray, val, array) 7249f3f976SKatherine Rasmussen 7349f3f976SKatherine Rasmussen !ERROR: Actual argument for 'stat=' has bad type 'LOGICAL(4)' 7449f3f976SKatherine Rasmussen call atomic_fetch_xor(scalar_coarray, val, old_val, non_integer) 7549f3f976SKatherine Rasmussen 7649f3f976SKatherine Rasmussen !ERROR: 'stat=' argument has unacceptable rank 1 7749f3f976SKatherine Rasmussen call atomic_fetch_xor(scalar_coarray, val, old_val, status_array) 7849f3f976SKatherine Rasmussen 797aa09688SKatherine Rasmussen !ERROR: 'stat' argument to 'atomic_fetch_xor' may not be a coindexed object 8049f3f976SKatherine Rasmussen call atomic_fetch_xor(scalar_coarray, val, old_val, coindexed_status[1]) 8149f3f976SKatherine Rasmussen 82573fc618SPeter Klausler !ERROR: Actual argument associated with INTENT(OUT) dummy argument 'stat=' is not definable 83573fc618SPeter Klausler !BECAUSE: '1_4' is not a variable or pointer 8449f3f976SKatherine Rasmussen call atomic_fetch_xor(scalar_coarray, val, old_val, 1) 8549f3f976SKatherine Rasmussen 8649f3f976SKatherine Rasmussen !ERROR: missing mandatory 'atom=' argument 8749f3f976SKatherine Rasmussen call atomic_fetch_xor() 8849f3f976SKatherine Rasmussen 8949f3f976SKatherine Rasmussen !ERROR: missing mandatory 'atom=' argument 9049f3f976SKatherine Rasmussen call atomic_fetch_xor(value=val, old=old_val, stat=status) 9149f3f976SKatherine Rasmussen 9249f3f976SKatherine Rasmussen !ERROR: missing mandatory 'value=' argument 9349f3f976SKatherine Rasmussen call atomic_fetch_xor(scalar_coarray) 9449f3f976SKatherine Rasmussen 9549f3f976SKatherine Rasmussen !ERROR: missing mandatory 'value=' argument 9649f3f976SKatherine Rasmussen call atomic_fetch_xor(atom=scalar_coarray, old=old_val, stat=status) 9749f3f976SKatherine Rasmussen 9849f3f976SKatherine Rasmussen !ERROR: missing mandatory 'old=' argument 9949f3f976SKatherine Rasmussen call atomic_fetch_xor(scalar_coarray, val) 10049f3f976SKatherine Rasmussen 10149f3f976SKatherine Rasmussen !ERROR: missing mandatory 'old=' argument 10249f3f976SKatherine Rasmussen call atomic_fetch_xor(atom=scalar_coarray, value=val) 10349f3f976SKatherine Rasmussen 10449f3f976SKatherine Rasmussen !ERROR: too many actual arguments for intrinsic 'atomic_fetch_xor' 10549f3f976SKatherine Rasmussen call atomic_fetch_xor(scalar_coarray, val, old_val, status, extra_arg) 10649f3f976SKatherine Rasmussen 10749f3f976SKatherine Rasmussen !ERROR: repeated keyword argument to intrinsic 'atomic_fetch_xor' 10849f3f976SKatherine Rasmussen call atomic_fetch_xor(atom=scalar_coarray, atom=repeated_atom, value=val, old=old_val, stat=status) 10949f3f976SKatherine Rasmussen 11049f3f976SKatherine Rasmussen !ERROR: repeated keyword argument to intrinsic 'atomic_fetch_xor' 11149f3f976SKatherine Rasmussen call atomic_fetch_xor(atom=scalar_coarray, value=val, value=repeated_val, old=old_val, stat=status) 11249f3f976SKatherine Rasmussen 11349f3f976SKatherine Rasmussen !ERROR: repeated keyword argument to intrinsic 'atomic_fetch_xor' 11449f3f976SKatherine Rasmussen call atomic_fetch_xor(atom=scalar_coarray, value=val, old=old_val, old=repeated_old, stat=status) 11549f3f976SKatherine Rasmussen 11649f3f976SKatherine Rasmussen !ERROR: repeated keyword argument to intrinsic 'atomic_fetch_xor' 11749f3f976SKatherine Rasmussen call atomic_fetch_xor(atom=scalar_coarray, value=val, old=old_val, stat=status, stat=repeated_status) 11849f3f976SKatherine Rasmussen 11949f3f976SKatherine Rasmussen !ERROR: unknown keyword argument to intrinsic 'atomic_fetch_xor' 12049f3f976SKatherine Rasmussen call atomic_fetch_xor(atomic=scalar_coarray, value=val, old=old_val, stat=status) 12149f3f976SKatherine Rasmussen 12249f3f976SKatherine Rasmussen !ERROR: unknown keyword argument to intrinsic 'atomic_fetch_xor' 12349f3f976SKatherine Rasmussen call atomic_fetch_xor(atom=scalar_coarray, values=val, old=old_val, stat=status) 12449f3f976SKatherine Rasmussen 12549f3f976SKatherine Rasmussen !ERROR: unknown keyword argument to intrinsic 'atomic_fetch_xor' 12649f3f976SKatherine Rasmussen call atomic_fetch_xor(atom=scalar_coarray, value=val, oldvalue=old_val, stat=status) 12749f3f976SKatherine Rasmussen 12849f3f976SKatherine Rasmussen !ERROR: unknown keyword argument to intrinsic 'atomic_fetch_xor' 12949f3f976SKatherine Rasmussen call atomic_fetch_xor(atom=scalar_coarray, value=val, old=old_val, status=status) 13049f3f976SKatherine Rasmussen 13149f3f976SKatherine Rasmussen !ERROR: keyword argument to intrinsic 'atomic_fetch_xor' was supplied positionally by an earlier actual argument 13249f3f976SKatherine Rasmussen call atomic_fetch_xor(scalar_coarray, val, old_val, atom=repeated_atom) 13349f3f976SKatherine Rasmussen 13449f3f976SKatherine Rasmussen !ERROR: keyword argument to intrinsic 'atomic_fetch_xor' was supplied positionally by an earlier actual argument 13549f3f976SKatherine Rasmussen call atomic_fetch_xor(scalar_coarray, val, old_val, value=repeated_val) 13649f3f976SKatherine Rasmussen 13749f3f976SKatherine Rasmussen !ERROR: keyword argument to intrinsic 'atomic_fetch_xor' was supplied positionally by an earlier actual argument 13849f3f976SKatherine Rasmussen call atomic_fetch_xor(scalar_coarray, val, old_val, status, stat=repeated_status) 13949f3f976SKatherine Rasmussen 14049f3f976SKatherine Rasmussenend program test_atomic_fetch_xor 141