Commit 909a3e38 by Paul Thomas

re PR fortran/31222 (Rejected: implicitly-typed dummys used in initialization expressions)

2007-04-07  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/31222
	* check.c (numeric_check): If an expresson has not got a type,
	see if it is a symbol for which a default type applies.

2007-04-07  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/31222
	* gfortran.dg/default_numeric_type_1.f90: New test.

From-SVN: r123643
parent c60a84b8
2007-04-07 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31222
* check.c (numeric_check): If an expresson has not got a type,
see if it is a symbol for which a default type applies.
2007-04-07 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31214
* trans-decl.c (gfc_get_symbol_decl): Allow unreferenced use
associated symbols.
......
......@@ -58,6 +58,18 @@ numeric_check (gfc_expr *e, int n)
if (gfc_numeric_ts (&e->ts))
return SUCCESS;
/* If the expression has not got a type, check if its namespace can
offer a default type. */
if ((e->expr_type == EXPR_VARIABLE || e->expr_type == EXPR_VARIABLE)
&& e->symtree->n.sym->ts.type == BT_UNKNOWN
&& gfc_set_default_type (e->symtree->n.sym, 0,
e->symtree->n.sym->ns) == SUCCESS
&& gfc_numeric_ts (&e->symtree->n.sym->ts))
{
e->ts = e->symtree->n.sym->ts;
return SUCCESS;
}
gfc_error ("'%s' argument of '%s' intrinsic at %L must be a numeric type",
gfc_current_intrinsic_arg[n], gfc_current_intrinsic, &e->where);
......
2007-04-07 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31222
* gfortran.dg/default_numeric_type_1.f90: New test.
2007-04-07 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31424
* gfortran.dg/unreferenced_use_assoc_1.f90: New test.
! { dg-do compile}
! { dg-options "-fdump-tree-original" }
! Tests the fix for PR 31222, in which the type of the arguments of abs
! and int below were not detected to be of default numeric type..
!
! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
!
subroutine mysub1(a,b,mode,dis)
! integer :: mode
! real :: dis
dimension a(abs(mode)),b(int(dis))
print *, mod
write (*,*) abs(mode), nint(dis)
end subroutine
program testprog
call mysub1((/1.,2./),(/1.,2.,3./),-2, 3.2)
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment