1! RUN: %S/test_errors.sh %s %t %flang_fc1 2! REQUIRES: shell 3!Testing data constraints : C874 - C875, C878 - C881 4module m 5 integer, target :: modarray(1) 6 contains 7 function f(i) 8 integer, intent(in) :: i 9 integer, pointer :: f 10 f => modarray(i) 11 end 12 subroutine CheckObject 13 type specialNumbers 14 integer one 15 integer numbers(5) 16 end type 17 type large 18 integer elt(10) 19 integer val 20 type(specialNumbers) nums 21 type(specialNumbers) numsArray(5) 22 end type 23 type(specialNumbers), parameter ::newNums = & 24 specialNumbers(1, (/ 1, 2, 3, 4, 5 /)) 25 type(specialNumbers), parameter ::newNumsArray(2) = & 26 (/ SpecialNumbers(1, (/ 1, 2, 3, 4, 5 /)), & 27 SpecialNumbers(1, (/ 1, 2, 3,4, 5 /)) /) 28 type(specialNumbers) nums 29 type(large) largeArray(5) 30 type(large) largeNumber 31 real :: a[*] 32 real :: b(5) 33 integer :: x 34 real, parameter:: c(5) = (/ 1, 2, 3, 4, 5 /) 35 integer :: d(10, 10) 36 character :: name(12) 37 integer :: ind = 2 38 !C874 39 !ERROR: Data object must not be a coindexed variable 40 DATA a[1] / 1 / 41 !C874 42 !ERROR: Data object must not be a coindexed variable 43 DATA(a[i], i = 1, 5) / 5 * 1 / 44 !C875 45 !ERROR: Data object variable must not be a function reference 46 DATA f(1) / 1 / 47 !C875 48 !ERROR: Data object must have constant subscripts 49 DATA b(ind) / 1 / 50 !C875 51 !ERROR: Data object must have constant subscripts 52 DATA name( : ind) / 'Ancd' / 53 !C875 54 !ERROR: Data object must have constant subscripts 55 DATA name(ind:) / 'Ancd' / 56 !C878 57 !ERROR: Data implied do object must be a variable 58 DATA(c(i), i = 1, 5) / 5 * 1 / 59 !C878 60 !ERROR: Data implied do object must be a variable 61 DATA(newNumsArray(i), i = 1, 2) & 62 / specialNumbers(1, 2 * (/ 1, 2, 3, 4, 5 /)) / 63 !C880 64 !ERROR: Data implied do structure component must be subscripted 65 DATA(nums % one, i = 1, 5) / 5 * 1 / 66 !C879 67 !ERROR: Data implied do object must be a variable 68 DATA(newNums % numbers(i), i = 1, 5) / 5 * 1 / 69 !C879 70 !ERROR: Data implied do object must be a variable 71 DATA(newNumsArray(i) % one, i = 1, 5) / 5 * 1 / 72 !C880 73 !OK: Correct use 74 DATA(largeArray(j) % nums % one, j = 1, 5) / 5 * 1 / 75 !C880 76 !OK: Correct use 77 DATA(largeNumber % numsArray(j) % one, j = 1, 5) / 5 * 1 / 78 !C881 79 !ERROR: Data object must have constant subscripts 80 DATA(b(x), i = 1, 5) / 5 * 1 / 81 !C881 82 !OK: Correct use 83 DATA(nums % numbers(i), i = 1, 5) / 5 * 1 / 84 !C881 85 !OK: Correct use 86 DATA((d(i, j), i = 1, 10), j = 1, 10) / 100 * 1 / 87 !C881 88 !OK: Correct use 89 DATA(d(i, 1), i = 1, 10) / 10 * 1 / 90 end 91 end 92