aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/match.c
diff options
context:
space:
mode:
authorTobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>2004-05-15 20:02:20 +0200
committerTobias Schlüter <tobi@gcc.gnu.org>2004-05-15 20:02:20 +0200
commitd663434b6cd9ae8cbaac50a8c1dcff317594184d (patch)
treea2f7e67e6e38ab33d08e077762d35c4386c5e8b1 /gcc/fortran/match.c
parentf437e359921603b19e22c44b44f6bb64c199b04f (diff)
downloadgcc-d663434b6cd9ae8cbaac50a8c1dcff317594184d.zip
gcc-d663434b6cd9ae8cbaac50a8c1dcff317594184d.tar.gz
gcc-d663434b6cd9ae8cbaac50a8c1dcff317594184d.tar.bz2
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
Diffstat (limited to 'gcc/fortran/match.c')
-rw-r--r--gcc/fortran/match.c5
1 files changed, 4 insertions, 1 deletions
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;