brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 17e6176 Raw
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