From d663434b6cd9ae8cbaac50a8c1dcff317594184d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Schl=C3=BCter?= Date: Sat, 15 May 2004 20:02:20 +0200 Subject: re PR fortran/13826 (Derived types in DATA statements not PARAMETERs) fortran: PR fortran/13826 * primary.c (match_structure_constructor): Rename ... (gfc_match_structure_constructor): ... to this. Make non-static. (gfc_match_rvalue): Call renamed function. * match.h (gfc_match_structure_constructor): Declare. * match.c (gfc_match_data_constant): Handle structure constructor. testsuite: PR fortran/13826 * gfortran.fortran-torture/compile/data_1.f90: New test. From-SVN: r81891 --- gcc/fortran/match.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'gcc/fortran/match.c') diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c index dc8dc3e..1b2b763 100644 --- a/gcc/fortran/match.c +++ b/gcc/fortran/match.c @@ -2907,12 +2907,15 @@ match_data_constant (gfc_expr ** result) if (gfc_find_symbol (name, NULL, 1, &sym)) return MATCH_ERROR; - if (sym == NULL || sym->attr.flavor != FL_PARAMETER) + if (sym == NULL + || (sym->attr.flavor != FL_PARAMETER && sym->attr.flavor != FL_DERIVED)) { gfc_error ("Symbol '%s' must be a PARAMETER in DATA statement at %C", name); return MATCH_ERROR; } + else if (sym->attr.flavor == FL_DERIVED) + return gfc_match_structure_constructor (sym, result); *result = gfc_copy_expr (sym->value); return MATCH_YES; -- cgit v1.1