1*3d115700SPeter Klausler! RUN: %python %S/test_errors.py %s %flang_fc1 2e87cdda3SPeter Klauslermodule m1 3b26dd424SPeter Klausler type :: t1 4b26dd424SPeter Klausler sequence 5b26dd424SPeter Klausler real :: x 6b26dd424SPeter Klausler end type 7b26dd424SPeter Klausler type :: t2 8b26dd424SPeter Klausler sequence 9b26dd424SPeter Klausler real :: x 10b26dd424SPeter Klausler end type 11b26dd424SPeter Klausler type :: t3 12b26dd424SPeter Klausler real :: x 13b26dd424SPeter Klausler end type 14b26dd424SPeter Klausler type :: t4 15b26dd424SPeter Klausler real, private :: x 16b26dd424SPeter Klausler end type 17b26dd424SPeter Klausler contains 18b26dd424SPeter Klausler subroutine s1a(x) 19b26dd424SPeter Klausler type(t1), intent(in) :: x 20b26dd424SPeter Klausler end 21b26dd424SPeter Klausler subroutine s2a(x) 22b26dd424SPeter Klausler type(t2), intent(in) :: x 23b26dd424SPeter Klausler end 24b26dd424SPeter Klausler subroutine s3a(x) 25b26dd424SPeter Klausler type(t3), intent(in) :: x 26b26dd424SPeter Klausler end 27b26dd424SPeter Klausler subroutine s4a(x) 28b26dd424SPeter Klausler type(t4), intent(in) :: x 29b26dd424SPeter Klausler end 30b26dd424SPeter Klauslerend 31b26dd424SPeter Klausler 32e87cdda3SPeter Klauslermodule m2 33e87cdda3SPeter Klausler type t10 34e87cdda3SPeter Klausler integer n 35e87cdda3SPeter Klausler contains 36e87cdda3SPeter Klausler procedure :: f 37e87cdda3SPeter Klausler generic:: operator(+) => f 38e87cdda3SPeter Klausler end type 39e87cdda3SPeter Klausler contains 40e87cdda3SPeter Klausler elemental type(t10) function f(x,y) 41e87cdda3SPeter Klausler class(t10), intent(in) :: x, y 42e87cdda3SPeter Klausler f%n = x%n + y%n 43e87cdda3SPeter Klausler end 44e87cdda3SPeter Klauslerend 45e87cdda3SPeter Klausler 46e87cdda3SPeter Klauslermodule m3 47e87cdda3SPeter Klausler use m2, only: rt10 => t10 48e87cdda3SPeter Klauslerend 49e87cdda3SPeter Klausler 50b26dd424SPeter Klauslerprogram test 51e87cdda3SPeter Klausler use m1, only: s1a, s2a, s3a, s4a 52e87cdda3SPeter Klausler use m2, only: t10 53e87cdda3SPeter Klausler use m3, only: rt10 ! alias for t10, ensure no distinguishability error 54b26dd424SPeter Klausler type :: t1 55b26dd424SPeter Klausler sequence 56b26dd424SPeter Klausler integer :: x ! distinct type 57b26dd424SPeter Klausler end type 58b26dd424SPeter Klausler type :: t2 59b26dd424SPeter Klausler sequence 60b26dd424SPeter Klausler real :: x 61b26dd424SPeter Klausler end type 62b26dd424SPeter Klausler type :: t3 ! no SEQUENCE 63b26dd424SPeter Klausler real :: x 64b26dd424SPeter Klausler end type 65b26dd424SPeter Klausler type :: t4 66b26dd424SPeter Klausler real :: x ! not PRIVATE 67b26dd424SPeter Klausler end type 68b26dd424SPeter Klausler interface distinguishable1 69b26dd424SPeter Klausler procedure :: s1a, s1b 70b26dd424SPeter Klausler end interface 71b26dd424SPeter Klausler interface distinguishable2 72b26dd424SPeter Klausler procedure :: s1a, s1b 73b26dd424SPeter Klausler end interface 74b26dd424SPeter Klausler interface distinguishable3 75b26dd424SPeter Klausler procedure :: s1a, s1b 76b26dd424SPeter Klausler end interface 77*3d115700SPeter Klausler !ERROR: Generic 'indistinguishable' may not have specific procedures 's2b' and 's2a' as their interfaces are not distinguishable 78b26dd424SPeter Klausler interface indistinguishable 79b26dd424SPeter Klausler procedure :: s2a, s2b 80b26dd424SPeter Klausler end interface 81b26dd424SPeter Klausler contains 82b26dd424SPeter Klausler subroutine s1b(x) 83b26dd424SPeter Klausler type(t1), intent(in) :: x 84b26dd424SPeter Klausler end 85b26dd424SPeter Klausler subroutine s2b(x) 86b26dd424SPeter Klausler type(t2), intent(in) :: x 87b26dd424SPeter Klausler end 88b26dd424SPeter Klausler subroutine s3b(x) 89b26dd424SPeter Klausler type(t3), intent(in) :: x 90b26dd424SPeter Klausler end 91b26dd424SPeter Klausler subroutine s4b(x) 92b26dd424SPeter Klausler type(t4), intent(in) :: x 93b26dd424SPeter Klausler end 94b26dd424SPeter Klauslerend 95