1! RUN: %S/test_errors.sh %s %t %flang_fc1 2! REQUIRES: shell 3! Tests valid and invalid NULL initializers 4 5module m1 6 implicit none 7 !ERROR: No explicit type declared for 'null' 8 private :: null 9end module 10 11module m2 12 implicit none 13 private :: null 14 integer, pointer :: p => null() 15end module 16 17module m3 18 private :: null 19 integer, pointer :: p => null() 20end module 21 22module m4 23 intrinsic :: null 24 integer, pointer :: p => null() 25end module 26 27module m5 28 external :: null 29 !ERROR: Pointer initializer must be intrinsic NULL() 30 integer, pointer :: p => null() 31end module 32 33module m6 34 !ERROR: Symbol 'null' cannot have both INTRINSIC and EXTERNAL attributes 35 integer, pointer :: p => null() 36 external :: null 37end module 38 39module m7 40 interface 41 function null() result(p) 42 integer, pointer :: p 43 end function 44 end interface 45 !ERROR: Pointer initializer must be intrinsic NULL() 46 integer, pointer :: p => null() 47end module 48 49module m8 50 integer, pointer :: p => null() 51 interface 52 !ERROR: 'null' is already declared in this scoping unit 53 function null() result(p) 54 integer, pointer :: p 55 end function 56 end interface 57end module 58 59module m9a 60 intrinsic :: null 61 contains 62 function foo() 63 integer, pointer :: foo 64 foo => null() 65 end function 66end module 67module m9b 68 use m9a, renamed => null, null => foo 69 integer, pointer :: p => renamed() 70 !ERROR: Pointer initializer must be intrinsic NULL() 71 integer, pointer :: q => null() 72 integer, pointer :: d1, d2 73 data d1/renamed()/ 74 !ERROR: An initial data target must be a designator with constant subscripts 75 data d2/null()/ 76end module 77