diff options
author | Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de> | 2004-05-15 20:02:20 +0200 |
---|---|---|
committer | Tobias Schlüter <tobi@gcc.gnu.org> | 2004-05-15 20:02:20 +0200 |
commit | d663434b6cd9ae8cbaac50a8c1dcff317594184d (patch) | |
tree | a2f7e67e6e38ab33d08e077762d35c4386c5e8b1 /gcc/fortran/match.c | |
parent | f437e359921603b19e22c44b44f6bb64c199b04f (diff) | |
download | gcc-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.c | 5 |
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; |