re PR fortran/45521 ([F08] GENERIC resolution with ALLOCATABLE/POINTER and PROCEDURE)
2018-08-04 Janus Weil <janus@gcc.gnu.org> PR fortran/45521 * interface.c (gfc_compare_interfaces): Apply additional distinguishability criteria of F08 to operator interfaces. 2018-08-04 Janus Weil <janus@gcc.gnu.org> PR fortran/45521 * gfortran.dg/interface_assignment_6.f90: New test case. From-SVN: r263308
This commit is contained in:
parent
5b1dd92aac
commit
d50cd259be
4 changed files with 52 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
2018-08-04 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
PR fortran/45521
|
||||
* interface.c (gfc_compare_interfaces): Apply additional
|
||||
distinguishability criteria of F08 to operator interfaces.
|
||||
|
||||
2018-07-31 Andre Vieira <andre.simoesdiasvieira@arm.com>
|
||||
|
||||
Revert 'AsyncI/O patch committed'
|
||||
|
|
|
@ -1776,7 +1776,7 @@ gfc_compare_interfaces (gfc_symbol *s1, gfc_symbol *s2, const char *name2,
|
|||
}
|
||||
else
|
||||
{
|
||||
/* Only check type and rank. */
|
||||
/* Operators: Only check type and rank of arguments. */
|
||||
if (!compare_type (f2->sym, f1->sym))
|
||||
{
|
||||
if (errmsg != NULL)
|
||||
|
@ -1794,6 +1794,15 @@ gfc_compare_interfaces (gfc_symbol *s1, gfc_symbol *s2, const char *name2,
|
|||
symbol_rank (f2->sym));
|
||||
return false;
|
||||
}
|
||||
if ((gfc_option.allow_std & GFC_STD_F2008)
|
||||
&& (compare_ptr_alloc(f1->sym, f2->sym)
|
||||
|| compare_ptr_alloc(f2->sym, f1->sym)))
|
||||
{
|
||||
if (errmsg != NULL)
|
||||
snprintf (errmsg, err_len, "Mismatching POINTER/ALLOCATABLE "
|
||||
"attribute in argument '%s' ", f1->sym->name);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
|
||||
2018-08-04 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
PR fortran/45521
|
||||
* gfortran.dg/interface_assignment_6.f90: New test case.
|
||||
|
||||
2018-08-04 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR testsuite/86153
|
||||
|
|
30
gcc/testsuite/gfortran.dg/interface_assignment_6.f90
Normal file
30
gcc/testsuite/gfortran.dg/interface_assignment_6.f90
Normal file
|
@ -0,0 +1,30 @@
|
|||
! { dg-do compile }
|
||||
!
|
||||
! PR 45521: [F08] GENERIC resolution with ALLOCATABLE/POINTER and PROCEDURE
|
||||
!
|
||||
! Contributed by Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
module inteface_assignment_6
|
||||
|
||||
type :: t
|
||||
end type
|
||||
|
||||
! this was rejected as ambiguous, but is valid in F08
|
||||
interface assignment(=)
|
||||
procedure testAlloc
|
||||
procedure testPtr
|
||||
end interface
|
||||
|
||||
contains
|
||||
|
||||
subroutine testAlloc(obj, val)
|
||||
type(t), allocatable, intent(out) :: obj
|
||||
integer, intent(in) :: val
|
||||
end subroutine
|
||||
|
||||
subroutine testPtr(obj, val)
|
||||
type(t), pointer, intent(out) :: obj
|
||||
integer, intent(in) :: val
|
||||
end subroutine
|
||||
|
||||
end
|
Loading…
Add table
Reference in a new issue