+2008-06-24 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/34371
+ * expr.c (gfc_check_assign): Change message and locus for
+ error when conform == 0.
+
2008-06-23 Jakub Jelinek <jakub@redhat.com>
PR fortran/36597
if (gfc_compare_types (&lvalue->ts, &rvalue->ts))
return SUCCESS;
+ /* Only DATA Statements come here. */
if (!conform)
{
/* Numeric can be converted to any other numeric. And Hollerith can be
if (lvalue->ts.type == BT_LOGICAL && rvalue->ts.type == BT_LOGICAL)
return SUCCESS;
- gfc_error ("Incompatible types in assignment at %L; attempted assignment "
- "of %s to %s", &rvalue->where, gfc_typename (&rvalue->ts),
- gfc_typename (&lvalue->ts));
+ gfc_error ("Incompatible types in DATA statement at %L; attempted "
+ "conversion of %s to %s", &lvalue->where,
+ gfc_typename (&rvalue->ts), gfc_typename (&lvalue->ts));
return FAILURE;
}
return FAILURE;
}
- if (a->expr->symtree->n.sym->attr.pointer)
+ if (f->sym->attr.pointer)
{
gfc_error ("Procedure argument at %L is local to a PURE "
"procedure and has the POINTER attribute",
+2008-06-24 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/36371
+ * gfortran.dg/data_array_5.f90: New test.
+
2008-06-24 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/warn5.adb: New test.
--- /dev/null
+! { dg-do compile }
+! Tests the fix for PR36371, in which the locus for the errors pointed to
+! the paramter declaration rather than the data statement.
+!
+! Contributed by Dominique d'Humieres <dominiq@lps.ens.fr>
+!
+program chkdata
+ character(len=3), parameter :: mychar(3) = [ "abc", "def", "ghi" ]
+ integer, parameter :: myint(3) = [1, 2, 3]
+ integer :: c(2)
+ character(4) :: i(2)
+ data c / mychar(1), mychar(3) / ! { dg-error "Incompatible types in DATA" }
+ data i / myint(3), myint(2) / ! { dg-error "Incompatible types in DATA" }
+end program chkdata