re PR fortran/22273 (problem to declare a character variable link to an intent(out) object)

2005-10-16  Erik Edelmann  <erik.edelmann@iki.fi>
fortran/
	PR 22273
	* expr.c (check_inquiry): Add "len" to inquiry_function.
testsuite/
	PR fortran/22273
	* gfortran.dg/spec_expr_2.f90: New.

From-SVN: r105460
This commit is contained in:
Erik Edelmann 2005-10-16 16:59:36 +03:00 committed by Tobias Schlüter
parent a9f7c5705b
commit c2b27658fe
4 changed files with 21 additions and 5 deletions

View File

@ -1,3 +1,8 @@
2005-10-16 Erik Edelmann <erik.edelmann@iki.fi>
PR 22273
* expr.c (check_inquiry): Add "len" to inquiry_function.
2005-10-14 Jakub Jelinek <jakub@redhat.com>
* primary.c (match_boz_constant): Add missing break after gfc_error.

View File

@ -1355,7 +1355,7 @@ check_inquiry (gfc_expr * e)
/* FIXME: This should be moved into the intrinsic definitions,
to eliminate this ugly hack. */
static const char * const inquiry_function[] = {
"digits", "epsilon", "huge", "kind", "maxexponent", "minexponent",
"digits", "epsilon", "huge", "kind", "len", "maxexponent", "minexponent",
"precision", "radix", "range", "tiny", "bit_size", "size", "shape",
"lbound", "ubound", NULL
};
@ -1376,10 +1376,9 @@ check_inquiry (gfc_expr * e)
if (e == NULL || e->expr_type != EXPR_VARIABLE)
return FAILURE;
/* At this point we have a numeric inquiry function with a variable
argument. The type of the variable might be undefined, but we
need it now, because the arguments of these functions are allowed
to be undefined. */
/* At this point we have an inquiry function with a variable argument. The
type of the variable might be undefined, but we need it now, because the
arguments of these functions are allowed to be undefined. */
if (e->ts.type == BT_UNKNOWN)
{

View File

@ -1,3 +1,8 @@
2005-10-16 Erik Edelmann <erik.edelmann@iki.fi>
PR fortran/22273
* gfortran.dg/spec_expr_2.f90: New.
2005-10-16 Hans-Peter Nilsson <hp@axis.com>
* g++.dg/debug/debug3.C, g++.dg/ext/visibility/noPLT.C,

View File

@ -0,0 +1,7 @@
! { dg-do compile }
! PR 22273: Allow INTENT(OUT) dummy:s as arguments to LEN() in specification
! expr:s
subroutine lecligne (ligne)
character(len=*), intent(out) :: ligne
character(len=len(ligne)) :: comment
end subroutine lecligne