1 ! RUN: %python %S/test_errors.py %s %flang_fc1
2 ! Allow the same external or intrinsic procedure to be use-associated
3 ! by multiple paths when they are unambiguous.
9 integer, intent(in
) :: a(:)
10 real, intent(in
) :: b(:)
13 real, intent(in
) :: a(:)
14 integer, intent(in
) :: b(:)
21 intrinsic :: iabs
, idim
24 integer, intent(in
) :: a(:)
25 real, intent(in
) :: b(:)
28 real, intent(in
) :: a(:)
29 integer, intent(in
) :: b(:)
37 !PORTABILITY: Procedure pointer 'p1' should not have an ELEMENTAL intrinsic as its interface
38 procedure(sin
), pointer :: p1
=> sin
39 !PORTABILITY: Procedure pointer 'p2' should not have an ELEMENTAL intrinsic as its interface
40 procedure(iabs
), pointer :: p2
=> iabs
41 procedure(ext1
), pointer :: p3
=> ext1
42 procedure(ext2
), pointer :: p4
=> ext2
46 use m1
, only
: x1
=> sin
, x2
=> iabs
, x3
=> ext1
, x4
=> ext2
47 use m2
, only
: x1
=> sin
, x2
=> iabs
, x3
=> ext1
, x4
=> ext2
48 use m1
, only
: iface1
=> sin
, iface2
=> iabs
, iface3
=> ext1
, iface4
=> ext2
49 !PORTABILITY: Procedure pointer 'p1' should not have an ELEMENTAL intrinsic as its interface
50 procedure(iface1
), pointer :: p1
=> x1
51 !PORTABILITY: Procedure pointer 'p2' should not have an ELEMENTAL intrinsic as its interface
52 procedure(iface2
), pointer :: p2
=> x2
53 procedure(iface3
), pointer :: p3
=> x3
54 procedure(iface4
), pointer :: p4
=> x4
63 !PORTABILITY: Procedure pointer 'p1' should not have an ELEMENTAL intrinsic as its interface
64 procedure(sin
), pointer :: p1
=> sin
65 !PORTABILITY: Procedure pointer 'p2' should not have an ELEMENTAL intrinsic as its interface
66 procedure(iabs
), pointer :: p2
=> iabs
67 procedure(ext1
), pointer :: p3
=> ext1
68 procedure(ext2
), pointer :: p4
=> ext2
72 use m1
, only
: x1
=> sin
, x2
=> iabs
, x3
=> ext1
, x4
=> ext2
73 use m2
, only
: x1
=> sin
, x2
=> iabs
, x3
=> ext1
, x4
=> ext2
77 use m1
, only
: iface1
=> sin
, iface2
=> iabs
, iface3
=> ext1
, iface4
=> ext2
78 !PORTABILITY: Procedure pointer 'p1' should not have an ELEMENTAL intrinsic as its interface
79 procedure(iface1
), pointer :: p1
=> x1
80 !PORTABILITY: Procedure pointer 'p2' should not have an ELEMENTAL intrinsic as its interface
81 procedure(iface2
), pointer :: p2
=> x2
82 procedure(iface3
), pointer :: p3
=> x3
83 procedure(iface4
), pointer :: p4
=> x4
87 use m1
, only
: x1
=> sin
, x2
=> iabs
, x3
=> ext1
, x4
=> ext2
88 use m2
, only
: x1
=> tan
, x2
=> idim
, x3
=> ext2
, x4
=> ext1
89 use m1
, only
: iface1
=> sin
, iface2
=> iabs
, iface3
=> ext1
, iface4
=> ext2
90 !PORTABILITY: Procedure pointer 'p1' should not have an ELEMENTAL intrinsic as its interface
91 !ERROR: Reference to 'x1' is ambiguous
92 procedure(iface1
), pointer :: p1
=> x1
93 !PORTABILITY: Procedure pointer 'p2' should not have an ELEMENTAL intrinsic as its interface
94 !ERROR: Reference to 'x2' is ambiguous
95 procedure(iface2
), pointer :: p2
=> x2
96 !ERROR: Reference to 'x3' is ambiguous
97 procedure(iface3
), pointer :: p3
=> x3
98 !ERROR: Reference to 'x4' is ambiguous
99 procedure(iface4
), pointer :: p4
=> x4