| ! RUN: %python %S/test_errors.py %s %flang_fc1 | |
| !Testing data constraints : C874 - C875, C878 - C881 | |
| module m | |
| integer, target :: modarray(1) | |
| contains | |
| function f(i) | |
| integer, intent(in) :: i | |
| integer, pointer :: f | |
| f => modarray(i) | |
| end | |
| subroutine CheckObject | |
| type specialNumbers | |
| integer one | |
| integer numbers(5) | |
| end type | |
| type large | |
| integer elt(10) | |
| integer val | |
| type(specialNumbers) nums | |
| type(specialNumbers) numsArray(5) | |
| end type | |
| type(specialNumbers), parameter ::newNums = & | |
| specialNumbers(1, (/ 1, 2, 3, 4, 5 /)) | |
| type(specialNumbers), parameter ::newNumsArray(2) = & | |
| (/ SpecialNumbers(1, (/ 1, 2, 3, 4, 5 /)), & | |
| SpecialNumbers(1, (/ 1, 2, 3,4, 5 /)) /) | |
| type(specialNumbers) nums | |
| type(large) largeArray(5) | |
| type(large) largeNumber | |
| real :: a[*] | |
| real :: b(5) | |
| integer :: x | |
| real, parameter:: c(5) = (/ 1, 2, 3, 4, 5 /) | |
| integer :: d(10, 10) | |
| character :: name(12) | |
| integer :: ind = 2 | |
| !ERROR: Data statement object must be a variable | |
| DATA name%len / 666 / | |
| !C874 | |
| !ERROR: Data object must not be a coindexed variable | |
| DATA a[1] / 1 / | |
| !C874 | |
| !ERROR: Data object must not be a coindexed variable | |
| DATA(a[i], i = 1, 5) / 5 * 1 / | |
| !C875 | |
| !ERROR: Data object variable must not be a function reference | |
| DATA f(1) / 1 / | |
| !C875 | |
| !ERROR: Data object must have constant subscripts | |
| DATA b(ind) / 1 / | |
| !C875 | |
| !ERROR: Data object must have constant subscripts | |
| DATA name( : ind) / 'Ancd' / | |
| !C875 | |
| !ERROR: Data object must have constant subscripts | |
| DATA name(ind:) / 'Ancd' / | |
| !C878 | |
| !ERROR: Data implied do object must be a variable | |
| DATA(c(i), i = 1, 5) / 5 * 1 / | |
| !C878 | |
| !ERROR: Data implied do object must be a variable | |
| DATA(newNumsArray(i), i = 1, 2) & | |
| / specialNumbers(1, 2 * (/ 1, 2, 3, 4, 5 /)) / | |
| !C880 | |
| !ERROR: Data implied do structure component must be subscripted | |
| DATA(nums % one, i = 1, 5) / 5 * 1 / | |
| !C879 | |
| !ERROR: Data implied do object must be a variable | |
| DATA(newNums % numbers(i), i = 1, 5) / 5 * 1 / | |
| !C879 | |
| !ERROR: Data implied do object must be a variable | |
| DATA(newNumsArray(i) % one, i = 1, 5) / 5 * 1 / | |
| !C880 | |
| !OK: Correct use | |
| DATA(largeArray(j) % nums % one, j = 1, 5) / 5 * 1 / | |
| !C880 | |
| !OK: Correct use | |
| DATA(largeNumber % numsArray(j) % one, j = 1, 5) / 5 * 1 / | |
| !C881 | |
| !ERROR: Data object must have constant subscripts | |
| DATA(b(x), i = 1, 5) / 5 * 1 / | |
| !C881 | |
| !OK: Correct use | |
| DATA(nums % numbers(i), i = 1, 5) / 5 * 1 / | |
| !C881 | |
| !OK: Correct use | |
| DATA((d(i, j), i = 1, 10), j = 1, 10) / 100 * 1 / | |
| !C881 | |
| !OK: Correct use | |
| DATA(d(i, 1), i = 1, 10) / 10 * 1 / | |
| end | |
| end |