147 lines · plain
1! RUN: %python %S/test_errors.py %s %flang_fc12!Testing data constraints : C876, C8773module m4 integer :: first5 contains6 subroutine h7 integer a,b8 !C8769 !ERROR: Host-associated object 'first' must not be initialized in a DATA statement10 DATA first /1/11 end subroutine12 13 function g(i)14 integer ::i15 g = i *102416 end17 18 function f(i)19 integer ::i20 integer ::result21 integer, allocatable :: a22 integer :: b(i)23 character(len=i), pointer:: charPtr24 character(len=i), allocatable:: charAlloc25 !C87626 !ERROR: Dummy argument 'i' must not be initialized in a DATA statement27 DATA i /1/28 !C87629 !ERROR: Function result 'f' must not be initialized in a DATA statement30 DATA f /1/31 !C87632 !ERROR: Procedure 'g' must not be initialized in a DATA statement33 DATA g /1/34 !C87635 !ERROR: Allocatable 'a' must not be initialized in a DATA statement36 DATA a /1/37 !C87638 !ERROR: Automatic variable 'b' must not be initialized in a DATA statement39 DATA b(1) /1/40 !C87641 !Ok: As charPtr is a pointer, it is not an automatic object42 DATA charPtr / NULL() /43 !C87644 !ERROR: Allocatable 'charalloc' must not be initialized in a DATA statement45 DATA charAlloc / 'abc' /46 f = i *102447 end48 49 subroutine CheckObject(i)50 type specialNumbers51 integer one52 integer numbers(5)53 type(specialNumbers), pointer :: headOfTheList54 integer, pointer, dimension(:) :: ptoarray55 character, pointer, dimension(:) :: ptochar56 end type57 type large58 integer, allocatable :: allocVal59 integer, allocatable :: elt(:)60 integer val61 type(specialNumbers) numsArray(10)62 end type63 type(large) largeNumber64 type(large), allocatable :: allocatableLarge65 type(large) :: largeNumberArray(i)66 type(large) :: largeArray(5)67 character :: name(i)68 type small69 real :: x70 end type71 type(small), pointer :: sp72 !This case is ok.73 DATA(largeNumber % numsArray(j) % headOfTheList, j = 1, 10) / 10 * NULL() /74 !C87775 !ERROR: Data object must not contain pointer 'headofthelist' as a non-rightmost part76 DATA(largeNumber % numsArray(j) % headOfTheList % one, j = 1, 10) / 10 * 1 /77 !C87778 !ERROR: Rightmost data object pointer 'ptoarray' must not be subscripted79 DATA(largeNumber % numsArray(j) % ptoarray(1), j = 1, 10) / 10 * 1 /80 !C87781 !ERROR: Rightmost data object pointer 'ptochar' must not be subscripted82 DATA largeNumber % numsArray(1) % ptochar(1:2) / 'ab' /83 !C87684 !ERROR: Allocatable 'elt' must not be initialized in a DATA statement85 DATA(largeNumber % elt(j) , j = 1, 10) / 10 * 1/86 !C87687 !ERROR: Allocatable 'allocval' must not be initialized in a DATA statement88 DATA(largeArray(j) % allocVal , j = 1, 10) / 10 * 1/89 !C87690 !ERROR: Allocatable 'allocatablelarge' must not be initialized in a DATA statement91 DATA allocatableLarge % val / 1 /92 !C87693 !ERROR: Automatic variable 'largenumberarray' must not be initialized in a DATA statement94 DATA(largeNumberArray(j) % val, j = 1, 10) / 10 * NULL() /95 !C87696 !ERROR: Automatic variable 'name' must not be initialized in a DATA statement97 DATA name( : 2) / 'Ancd' /98 !ERROR: Target of pointer 'sp' must not be initialized in a DATA statement99 DATA sp%x / 1.0 /100 end101 end102 103 block data foo104 integer :: a,b105 common /c/ a,b106 !C876107 !OK: Correct use108 DATA a /1/109 end block data110 111 module m2112 integer m2_i113 type newType114 integer number115 end type116 type(newType) m2_number1117 contains118 119 subroutine checkDerivedType(m2_number)120 type(newType) m2_number121 type(newType) m2_number3122 !C876123 !ERROR: Dummy argument 'm2_number' must not be initialized in a DATA statement124 DATA m2_number%number /1/125 !C876126 !ERROR: Host-associated object 'm2_number1' must not be initialized in a DATA statement127 DATA m2_number1%number /1/128 !C876129 !OK: m2_number3 is not associated through use association130 DATA m2_number3%number /1/131 end132 end133 134 program new135 use m2136 type(newType) m2_number2137 !C876138 !ERROR: USE-associated object 'm2_i' must not be initialized in a DATA statement139 DATA m2_i /1/140 !C876141 !ERROR: USE-associated object 'm2_number1' must not be initialized in a DATA statement142 DATA m2_number1%number /1/143 !C876144 !OK: m2_number2 is not associated through use association145 DATA m2_number2%number /1/146 end program147