68 lines · plain
1! RUN: %python %S/test_errors.py %s %flang_fc12 3module m14 type :: impureFinal5 contains6 final :: impureSub7 final :: impureSubRank18 final :: impureSubRank29 end type10 11 contains12 13 impure subroutine impureSub(x)14 type(impureFinal), intent(in) :: x15 end subroutine16 17 impure subroutine impureSubRank1(x)18 type(impureFinal), intent(in) :: x(:)19 end subroutine20 21 impure subroutine impureSubRank2(x)22 type(impureFinal), intent(in) :: x(:,:)23 end subroutine24 25 subroutine s1()26 implicit none27 integer :: i28 type(impureFinal), allocatable :: ifVar, ifvar129 type(impureFinal), allocatable :: ifArr1(:), ifArr2(:,:)30 type(impureFinal) :: if031 integer a(10)32 allocate(ifVar)33 allocate(ifVar1)34 allocate(ifArr1(5), ifArr2(5,5))35 36 ! Error to invoke an IMPURE FINAL procedure in a FORALL37 forall (i = 1:10)38 !WARNING: FORALL index variable 'i' not used on left-hand side of assignment [-Wunused-forall-index]39 !ERROR: Impure procedure 'impuresub' is referenced by finalization in a FORALL40 ifvar = ifvar141 end forall42 43 forall (i = 1:5)44 !ERROR: Impure procedure 'impuresub' is referenced by finalization in a FORALL45 ifArr1(i) = if046 end forall47 48 forall (i = 1:5)49 !WARNING: FORALL index variable 'i' not used on left-hand side of assignment [-Wunused-forall-index]50 !ERROR: Impure procedure 'impuresubrank1' is referenced by finalization in a FORALL51 ifArr1 = if052 end forall53 54 forall (i = 1:5)55 !ERROR: Impure procedure 'impuresubrank1' is referenced by finalization in a FORALL56 ifArr2(i,:) = if057 end forall58 59 forall (i = 1:5)60 !WARNING: FORALL index variable 'i' not used on left-hand side of assignment [-Wunused-forall-index]61 !ERROR: Impure procedure 'impuresubrank2' is referenced by finalization in a FORALL62 ifArr2(:,:) = if063 end forall64 end subroutine65 66end module m167 68