1*1c91d9bdSPeter Klausler! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic 2b05486dbSPeter Klausler! Allow the same external or intrinsic procedure to be use-associated 3b05486dbSPeter Klausler! by multiple paths when they are unambiguous. 4b05486dbSPeter Klauslermodule m1 5b05486dbSPeter Klausler intrinsic :: sin 6b05486dbSPeter Klausler intrinsic :: iabs 7b05486dbSPeter Klausler interface 8b05486dbSPeter Klausler subroutine ext1(a, b) 9b05486dbSPeter Klausler integer, intent(in) :: a(:) 10b05486dbSPeter Klausler real, intent(in) :: b(:) 11b05486dbSPeter Klausler end subroutine 12b05486dbSPeter Klausler subroutine ext2(a, b) 13b05486dbSPeter Klausler real, intent(in) :: a(:) 14b05486dbSPeter Klausler integer, intent(in) :: b(:) 15b05486dbSPeter Klausler end subroutine 16b05486dbSPeter Klausler end interface 17b05486dbSPeter Klauslerend module m1 18b05486dbSPeter Klausler 19b05486dbSPeter Klauslermodule m2 20b05486dbSPeter Klausler intrinsic :: sin, tan 21b05486dbSPeter Klausler intrinsic :: iabs, idim 22b05486dbSPeter Klausler interface 23b05486dbSPeter Klausler subroutine ext1(a, b) 24b05486dbSPeter Klausler integer, intent(in) :: a(:) 25b05486dbSPeter Klausler real, intent(in) :: b(:) 26b05486dbSPeter Klausler end subroutine 27b05486dbSPeter Klausler subroutine ext2(a, b) 28b05486dbSPeter Klausler real, intent(in) :: a(:) 29b05486dbSPeter Klausler integer, intent(in) :: b(:) 30b05486dbSPeter Klausler end subroutine 31b05486dbSPeter Klausler end interface 32b05486dbSPeter Klauslerend module m2 33b05486dbSPeter Klausler 34b05486dbSPeter Klauslersubroutine s2a 35b05486dbSPeter Klausler use m1 36b05486dbSPeter Klausler use m2 370c0b2ea9SPeter Klausler !PORTABILITY: Procedure pointer 'p1' should not have an ELEMENTAL intrinsic as its interface 38b05486dbSPeter Klausler procedure(sin), pointer :: p1 => sin 390c0b2ea9SPeter Klausler !PORTABILITY: Procedure pointer 'p2' should not have an ELEMENTAL intrinsic as its interface 40b05486dbSPeter Klausler procedure(iabs), pointer :: p2 => iabs 41b05486dbSPeter Klausler procedure(ext1), pointer :: p3 => ext1 42b05486dbSPeter Klausler procedure(ext2), pointer :: p4 => ext2 43b05486dbSPeter Klauslerend subroutine 44b05486dbSPeter Klausler 45b05486dbSPeter Klauslersubroutine s2b 46b05486dbSPeter Klausler use m1, only: x1 => sin, x2 => iabs, x3 => ext1, x4 => ext2 47b05486dbSPeter Klausler use m2, only: x1 => sin, x2 => iabs, x3 => ext1, x4 => ext2 48b05486dbSPeter Klausler use m1, only: iface1 => sin, iface2 => iabs, iface3 => ext1, iface4 => ext2 490c0b2ea9SPeter Klausler !PORTABILITY: Procedure pointer 'p1' should not have an ELEMENTAL intrinsic as its interface 50b05486dbSPeter Klausler procedure(iface1), pointer :: p1 => x1 510c0b2ea9SPeter Klausler !PORTABILITY: Procedure pointer 'p2' should not have an ELEMENTAL intrinsic as its interface 52b05486dbSPeter Klausler procedure(iface2), pointer :: p2 => x2 53b05486dbSPeter Klausler procedure(iface3), pointer :: p3 => x3 54b05486dbSPeter Klausler procedure(iface4), pointer :: p4 => x4 55b05486dbSPeter Klauslerend subroutine 56b05486dbSPeter Klausler 57b05486dbSPeter Klauslermodule m3 58b05486dbSPeter Klausler use m1 59b05486dbSPeter Klausler use m2 60b05486dbSPeter Klauslerend module 61b05486dbSPeter Klauslersubroutine s3 62b05486dbSPeter Klausler use m3 630c0b2ea9SPeter Klausler !PORTABILITY: Procedure pointer 'p1' should not have an ELEMENTAL intrinsic as its interface 64b05486dbSPeter Klausler procedure(sin), pointer :: p1 => sin 650c0b2ea9SPeter Klausler !PORTABILITY: Procedure pointer 'p2' should not have an ELEMENTAL intrinsic as its interface 66b05486dbSPeter Klausler procedure(iabs), pointer :: p2 => iabs 67b05486dbSPeter Klausler procedure(ext1), pointer :: p3 => ext1 68b05486dbSPeter Klausler procedure(ext2), pointer :: p4 => ext2 69b05486dbSPeter Klauslerend subroutine 70b05486dbSPeter Klausler 71b05486dbSPeter Klauslermodule m4 72b05486dbSPeter Klausler use m1, only: x1 => sin, x2 => iabs, x3 => ext1, x4 => ext2 73b05486dbSPeter Klausler use m2, only: x1 => sin, x2 => iabs, x3 => ext1, x4 => ext2 74b05486dbSPeter Klauslerend module 75b05486dbSPeter Klauslersubroutine s4 76b05486dbSPeter Klausler use m4 77b05486dbSPeter Klausler use m1, only: iface1 => sin, iface2 => iabs, iface3 => ext1, iface4 => ext2 780c0b2ea9SPeter Klausler !PORTABILITY: Procedure pointer 'p1' should not have an ELEMENTAL intrinsic as its interface 79b05486dbSPeter Klausler procedure(iface1), pointer :: p1 => x1 800c0b2ea9SPeter Klausler !PORTABILITY: Procedure pointer 'p2' should not have an ELEMENTAL intrinsic as its interface 81b05486dbSPeter Klausler procedure(iface2), pointer :: p2 => x2 82b05486dbSPeter Klausler procedure(iface3), pointer :: p3 => x3 83b05486dbSPeter Klausler procedure(iface4), pointer :: p4 => x4 84b05486dbSPeter Klauslerend subroutine 85b05486dbSPeter Klausler 86b05486dbSPeter Klauslersubroutine s5 87b05486dbSPeter Klausler use m1, only: x1 => sin, x2 => iabs, x3 => ext1, x4 => ext2 88b05486dbSPeter Klausler use m2, only: x1 => tan, x2 => idim, x3 => ext2, x4 => ext1 89b05486dbSPeter Klausler use m1, only: iface1 => sin, iface2 => iabs, iface3 => ext1, iface4 => ext2 900c0b2ea9SPeter Klausler !PORTABILITY: Procedure pointer 'p1' should not have an ELEMENTAL intrinsic as its interface 91b05486dbSPeter Klausler !ERROR: Reference to 'x1' is ambiguous 92b05486dbSPeter Klausler procedure(iface1), pointer :: p1 => x1 930c0b2ea9SPeter Klausler !PORTABILITY: Procedure pointer 'p2' should not have an ELEMENTAL intrinsic as its interface 94b05486dbSPeter Klausler !ERROR: Reference to 'x2' is ambiguous 95b05486dbSPeter Klausler procedure(iface2), pointer :: p2 => x2 96b05486dbSPeter Klausler !ERROR: Reference to 'x3' is ambiguous 97b05486dbSPeter Klausler procedure(iface3), pointer :: p3 => x3 98b05486dbSPeter Klausler !ERROR: Reference to 'x4' is ambiguous 99b05486dbSPeter Klausler procedure(iface4), pointer :: p4 => x4 100b05486dbSPeter Klauslerend subroutine 101