brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · 777ddbf Raw
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