110 lines · plain
1! RUN: %python %S/test_errors.py %s %flang_fc12! This test checks for semantic errors in atomic_add() subroutine based on the3! statement specification in section 16.9.20 of the Fortran 2018 standard.4 5program test_atomic_add6 use iso_fortran_env, only : atomic_int_kind7 implicit none(external, type)8 9 integer(kind=atomic_int_kind) atom_object[*], atom_array(2)[*], quantity, array(1), coarray[*], non_coarray10 integer non_atom_object[*], non_scalar(1), status, stat_array(1), coindexed[*]11 logical non_integer12 13 !___ standard-conforming calls with required arguments _______14 15 call atomic_add(atom_object, quantity)16 call atomic_add(atom_object[1], quantity)17 call atomic_add(atom_array(1), quantity)18 call atomic_add(atom_array(1)[1], quantity)19 call atomic_add(atom_object, array(1))20 call atomic_add(atom_object, coarray[1])21 call atomic_add(atom=atom_object, value=quantity)22 call atomic_add(value=quantity, atom=atom_object)23 24 !___ standard-conforming calls with all arguments ____________25 call atomic_add(atom_object, quantity, status)26 call atomic_add(atom_object, quantity, stat_array(1))27 call atomic_add(atom=atom_object, value=quantity, stat=status)28 call atomic_add(stat=status, value=quantity, atom=atom_object)29 30 !___ non-standard-conforming calls _______31 32 ! atom must be of kind atomic_int_kind33 ! ERROR: Actual argument for 'atom=' must have kind=atomic_int_kind, but is 'INTEGER(4)'34 call atomic_add(non_atom_object, quantity)35 36 ! atom must be a coarray37 ! ERROR: 'atom=' argument must be a scalar coarray or coindexed object for intrinsic 'atomic_add'38 call atomic_add(non_coarray, quantity)39 40 ! atom must be a scalar variable41 ! ERROR: 'atom=' argument must be a scalar coarray or coindexed object for intrinsic 'atomic_add'42 call atomic_add(atom_array, quantity)43 44 ! atom has an unknown keyword argument45 ! ERROR: unknown keyword argument to intrinsic 'atomic_add'46 call atomic_add(atoms=atom_object, value=quantity)47 48 ! atom has an argument mismatch49 ! ERROR: Actual argument for 'atom=' must have kind=atomic_int_kind, but is 'INTEGER(4)'50 call atomic_add(atom=non_atom_object, value=quantity)51 52 ! value must be an integer53 ! ERROR: Actual argument for 'value=' has bad type 'LOGICAL(4)'54 call atomic_add(atom_object, non_integer)55 56 ! value must be an integer scalar57 ! ERROR: 'value=' argument has unacceptable rank 158 call atomic_add(atom_object, array)59 60 ! value has an unknown keyword argument61 ! ERROR: unknown keyword argument to intrinsic 'atomic_add'62 call atomic_add(atom_object, values=quantity)63 64 ! value has an argument mismatch65 ! ERROR: Actual argument for 'value=' has bad type 'LOGICAL(4)'66 call atomic_add(atom_object, value=non_integer)67 68 ! stat must be an integer69 ! ERROR: Actual argument for 'stat=' has bad type 'LOGICAL(4)'70 call atomic_add(atom_object, quantity, non_integer)71 72 ! stat must be an integer scalar73 ! ERROR: 'stat=' argument has unacceptable rank 174 call atomic_add(atom_object, quantity, non_scalar)75 76 ! stat is an intent(out) argument77 ! ERROR: Actual argument associated with INTENT(OUT) dummy argument 'stat=' is not definable78 ! ERROR: '8_4' is not a variable or pointer79 call atomic_add(atom_object, quantity, 8)80 81 ! stat has an unknown keyword argument82 ! ERROR: unknown keyword argument to intrinsic 'atomic_add'83 call atomic_add(atom_object, quantity, statuses=status)84 85 ! stat has an argument mismatch86 ! ERROR: Actual argument for 'stat=' has bad type 'LOGICAL(4)'87 call atomic_add(atom_object, quantity, stat=non_integer)88 89 ! stat must not be coindexed90 ! ERROR: 'stat' argument to 'atomic_add' may not be a coindexed object91 call atomic_add(atom_object, quantity, coindexed[1])92 93 ! Too many arguments94 ! ERROR: too many actual arguments for intrinsic 'atomic_add'95 call atomic_add(atom_object, quantity, status, stat_array(1))96 97 ! Repeated atom keyword98 ! ERROR: repeated keyword argument to intrinsic 'atomic_add'99 call atomic_add(atom=atom_object, atom=atom_array(1), value=quantity)100 101 ! Repeated value keyword102 ! ERROR: repeated keyword argument to intrinsic 'atomic_add'103 call atomic_add(atom=atom_object, value=quantity, value=array(1))104 105 ! Repeated stat keyword106 ! ERROR: repeated keyword argument to intrinsic 'atomic_add'107 call atomic_add(atom=atom_object, value=quantity, stat=status, stat=stat_array(1))108 109end program test_atomic_add110