Fortran: Add missing diagnostic for F2018 C711 (TS29113 C407c)
2021-09-24 Sandra Loosemore <sandra@codesourcery.com> PR fortran/101333 gcc/fortran/ * interface.c (compare_parameter): Enforce F2018 C711. gcc/testsuite/ * gfortran.dg/c-interop/c407c-1.f90: Remove xfails.
This commit is contained in:
parent
34947d4e97
commit
2364250ecc
2 changed files with 17 additions and 2 deletions
|
@ -2448,6 +2448,21 @@ compare_parameter (gfc_symbol *formal, gfc_expr *actual,
|
|||
return false;
|
||||
}
|
||||
|
||||
/* TS29113 C407c; F2018 C711. */
|
||||
if (actual->ts.type == BT_ASSUMED
|
||||
&& symbol_rank (formal) == -1
|
||||
&& actual->rank != -1
|
||||
&& !(actual->symtree->n.sym->as
|
||||
&& actual->symtree->n.sym->as->type == AS_ASSUMED_SHAPE))
|
||||
{
|
||||
if (where)
|
||||
gfc_error ("Assumed-type actual argument at %L corresponding to "
|
||||
"assumed-rank dummy argument %qs must be "
|
||||
"assumed-shape or assumed-rank",
|
||||
&actual->where, formal->name);
|
||||
return false;
|
||||
}
|
||||
|
||||
/* F2008, 12.5.2.5; IR F08/0073. */
|
||||
if (formal->ts.type == BT_CLASS && formal->attr.class_ok
|
||||
&& actual->expr_type != EXPR_NULL
|
||||
|
|
|
@ -44,7 +44,7 @@ subroutine s2 (x)
|
|||
implicit none
|
||||
type(*) :: x(*)
|
||||
|
||||
call g (x, 1) ! { dg-error "Assumed.type" "pr101333" { xfail *-*-* } }
|
||||
call g (x, 1) ! { dg-error "Assumed.type" }
|
||||
end subroutine
|
||||
|
||||
! Check that a scalar gives an error.
|
||||
|
@ -53,7 +53,7 @@ subroutine s3 (x)
|
|||
implicit none
|
||||
type(*) :: x
|
||||
|
||||
call g (x, 1) ! { dg-error "Assumed.type" "pr101333" { xfail *-*-* } }
|
||||
call g (x, 1) ! { dg-error "Assumed.type" }
|
||||
end subroutine
|
||||
|
||||
! Explicit-shape assumed-type actual arguments are forbidden implicitly
|
||||
|
|
Loading…
Add table
Reference in a new issue