diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/ambiguous_specific_1.f90')
-rw-r--r-- | gcc/testsuite/gfortran.dg/ambiguous_specific_1.f90 | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/ambiguous_specific_1.f90 b/gcc/testsuite/gfortran.dg/ambiguous_specific_1.f90 new file mode 100644 index 000000000..b5292b2dd --- /dev/null +++ b/gcc/testsuite/gfortran.dg/ambiguous_specific_1.f90 @@ -0,0 +1,38 @@ +! { dg-do compile } +! Checks the fix for PR33542, in which the ambiguity in the specific +! interfaces of foo was missed. +! +! Contributed by Tobias Burnus <burnus@gcc.gnu.org> +! +MODULE M1 + INTERFACE FOO + MODULE PROCEDURE FOO + END INTERFACE +CONTAINS + SUBROUTINE FOO(I) + INTEGER, INTENT(IN) :: I + WRITE(*,*) 'INTEGER' + END SUBROUTINE FOO +END MODULE M1 + +MODULE M2 + INTERFACE FOO + MODULE PROCEDURE FOO + END INTERFACE +CONTAINS + SUBROUTINE FOO(R) + REAL, INTENT(IN) :: R + WRITE(*,*) 'REAL' + END SUBROUTINE FOO +END MODULE M2 + +PROGRAM P + USE M1 + USE M2 + implicit none + external bar + CALL FOO(10) + CALL FOO(10.) + call bar (foo) ! { dg-error "is ambiguous" } +END PROGRAM P +! { dg-final { cleanup-modules "m1 m2" } } |