93 lines · plain
1! RUN: %python %S/test_errors.py %s %flang_fc12!Testing data constraints : C874 - C875, C878 - C8813module m4 integer, target :: modarray(1)5 contains6 function f(i)7 integer, intent(in) :: i8 integer, pointer :: f9 f => modarray(i)10 end11 subroutine CheckObject12 type specialNumbers13 integer one14 integer numbers(5)15 end type16 type large17 integer elt(10)18 integer val19 type(specialNumbers) nums20 type(specialNumbers) numsArray(5)21 end type22 type(specialNumbers), parameter ::newNums = &23 specialNumbers(1, (/ 1, 2, 3, 4, 5 /))24 type(specialNumbers), parameter ::newNumsArray(2) = &25 (/ SpecialNumbers(1, (/ 1, 2, 3, 4, 5 /)), &26 SpecialNumbers(1, (/ 1, 2, 3,4, 5 /)) /)27 type(specialNumbers) nums28 type(large) largeArray(5)29 type(large) largeNumber30 real :: a[*]31 real :: b(5)32 integer :: x33 real, parameter:: c(5) = (/ 1, 2, 3, 4, 5 /)34 integer :: d(10, 10)35 character :: name(12)36 integer :: ind = 237 !ERROR: Data statement object must be a variable38 DATA name%len / 666 /39 !C87440 !ERROR: Data object must not be a coindexed variable41 DATA a[1] / 1 /42 !C87443 !ERROR: Data object must not be a coindexed variable44 DATA(a[i], i = 1, 5) / 5 * 1 /45 !C87546 !ERROR: Data object variable must not be a function reference47 DATA f(1) / 1 / 48 !C87549 !ERROR: Data object must have constant subscripts50 DATA b(ind) / 1 /51 !C87552 !ERROR: Data object must have constant subscripts53 DATA name( : ind) / 'Ancd' /54 !C87555 !ERROR: Data object must have constant subscripts56 DATA name(ind:) / 'Ancd' /57 !C87858 !ERROR: Data implied do object must be a variable59 DATA(c(i), i = 1, 5) / 5 * 1 /60 !C87861 !ERROR: Data implied do object must be a variable62 DATA(newNumsArray(i), i = 1, 2) &63 / specialNumbers(1, 2 * (/ 1, 2, 3, 4, 5 /)) /64 !C88065 !ERROR: Data implied do structure component must be subscripted66 DATA(nums % one, i = 1, 5) / 5 * 1 /67 !C87968 !ERROR: Data implied do object must be a variable69 DATA(newNums % numbers(i), i = 1, 5) / 5 * 1 /70 !C87971 !ERROR: Data implied do object must be a variable72 DATA(newNumsArray(i) % one, i = 1, 5) / 5 * 1 /73 !C88074 !OK: Correct use75 DATA(largeArray(j) % nums % one, j = 1, 5) / 5 * 1 /76 !C88077 !OK: Correct use78 DATA(largeNumber % numsArray(j) % one, j = 1, 5) / 5 * 1 /79 !C88180 !ERROR: Data object must have constant subscripts81 DATA(b(x), i = 1, 5) / 5 * 1 /82 !C88183 !OK: Correct use84 DATA(nums % numbers(i), i = 1, 5) / 5 * 1 /85 !C88186 !OK: Correct use87 DATA((d(i, j), i = 1, 10), j = 1, 10) / 100 * 1 /88 !C88189 !OK: Correct use90 DATA(d(i, 1), i = 1, 10) / 10 * 1 /91 end92 end93