1! RUN: %python %S/test_errors.py %s %flang_fc1 2! Tests for duplicate definitions and initializations, mostly of procedures 3module m 4 procedure(real), pointer :: p 5 !ERROR: EXTERNAL attribute was already specified on 'p' 6 !ERROR: POINTER attribute was already specified on 'p' 7 !ERROR: The type of 'p' has already been declared 8 procedure(integer), pointer :: p 9end 10 11module m1 12 real, dimension(:), pointer :: realArray => null() 13 !ERROR: POINTER attribute was already specified on 'realarray' 14 !ERROR: The type of 'realarray' has already been declared 15 real, dimension(:), pointer :: realArray => localArray 16end module m1 17 18module m2 19 interface 20 subroutine sub() 21 end subroutine sub 22 end interface 23 24 procedure(sub), pointer :: p1 => null() 25 !ERROR: EXTERNAL attribute was already specified on 'p1' 26 !ERROR: POINTER attribute was already specified on 'p1' 27 !ERROR: The interface for procedure 'p1' has already been declared 28 procedure(sub), pointer :: p1 => null() 29 30end module m2 31 32module m3 33 interface 34 real function fun() 35 end function fun 36 end interface 37 38 procedure(fun), pointer :: f1 => null() 39 !ERROR: EXTERNAL attribute was already specified on 'f1' 40 !ERROR: POINTER attribute was already specified on 'f1' 41 !ERROR: The interface for procedure 'f1' has already been declared 42 procedure(fun), pointer :: f1 => null() 43 44end module m3 45 46module m4 47 real, dimension(:), pointer :: localArray => null() 48 type :: t2 49 real, dimension(:), pointer :: realArray => null() 50 !ERROR: Component 'realarray' is already declared in this derived type 51 real, dimension(:), pointer :: realArray => localArray 52 end type 53end module m4 54 55module m5 56 !ERROR: Actual argument for 'string=' has bad type 'REAL(4)' 57 character(len=len(a)) :: b 58 !ERROR: The type of 'a' has already been implicitly declared 59 character(len=len(b)) :: a 60end module m5 61 62module m6 63 integer, dimension(3) :: iarray 64 !ERROR: Derived type 'ubound' not found 65 character(len=ubound(iarray)(1)) :: first 66end module m6 67 68module m7 69 integer, dimension(2) :: iarray 70 !ERROR: Derived type 'ubound' not found 71 integer :: ivar = ubound(iarray)(1) 72end module m7 73 74module m8 75 integer :: iVar = 3 76 !ERROR: The type of 'ivar' has already been declared 77 integer :: iVar = 4 78 integer, target :: jVar = 5 79 integer, target :: kVar = 5 80 integer, pointer :: pVar => jVar 81 !ERROR: POINTER attribute was already specified on 'pvar' 82 !ERROR: The type of 'pvar' has already been declared 83 integer, pointer :: pVar => kVar 84end module m8 85 86module m9 87 integer :: p, q 88 procedure() p ! ok 89 !ERROR: The type of 'q' has already been declared 90 procedure(real) q 91end module m9 92