re PR fortran/33542 (gfortran does not detect ambigious specific names if they are the same as generic names)
2007-10-12 Paul Thomas <pault@gcc.gnu.org> PR fortran/33542 * resolve.c (resolve_actual_arglist): If the actual argument is ambiguous, then there is an error. 2007-10-12 Paul Thomas <pault@gcc.gnu.org> PR fortran/33542 * gfortran.dg/ambiguous_specific_1.f90: New test. From-SVN: r129268
This commit is contained in:
parent
98a36c7ca0
commit
27372c38aa
@ -1,3 +1,9 @@
|
||||
2007-10-12 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/33542
|
||||
* resolve.c (resolve_actual_arglist): If the actual argument is
|
||||
ambiguous, then there is an error.
|
||||
|
||||
2007-10-12 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/33664
|
||||
|
@ -971,6 +971,13 @@ resolve_actual_arglist (gfc_actual_arglist *arg, procedure_type ptype)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (e->expr_type == FL_VARIABLE && e->symtree->ambiguous)
|
||||
{
|
||||
gfc_error ("'%s' at %L is ambiguous", e->symtree->n.sym->name,
|
||||
&e->where);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
if (e->ts.type != BT_PROCEDURE)
|
||||
{
|
||||
if (gfc_resolve_expr (e) != SUCCESS)
|
||||
|
@ -1,3 +1,8 @@
|
||||
2007-10-12 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/33542
|
||||
* gfortran.dg/ambiguous_specific_1.f90: New test.
|
||||
|
||||
2007-10-12 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/33664
|
||||
|
38
gcc/testsuite/gfortran.dg/ambiguous_specific_1.f90
Normal file
38
gcc/testsuite/gfortran.dg/ambiguous_specific_1.f90
Normal file
@ -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" } }
|
Loading…
Reference in New Issue
Block a user