diff options
author | Erik Edelmann <erik.edelmann@iki.fi> | 2005-05-18 22:20:31 +0300 |
---|---|---|
committer | Tobias Schlüter <tobi@gcc.gnu.org> | 2005-05-18 21:20:31 +0200 |
commit | acc75ae36ea717cc0792ffec8f6336c4a73da7b3 (patch) | |
tree | 103eb1e45541bcba7b7352fc170509174c22cd36 /gcc/fortran/array.c | |
parent | c0fb94d7250e1311bfd2724f3df629999f1a291b (diff) | |
download | gcc-acc75ae36ea717cc0792ffec8f6336c4a73da7b3.zip gcc-acc75ae36ea717cc0792ffec8f6336c4a73da7b3.tar.gz gcc-acc75ae36ea717cc0792ffec8f6336c4a73da7b3.tar.bz2 |
array.c (gfc_match_array_constructor): Support [ ...
fortran/
* array.c (gfc_match_array_constructor): Support [ ... ]
style array constructors.
testsuite/
* gfortran.dg/array_constructor_1.f90: New test.
* gfortran.dg/array_constructor_2.f90: New test.
From-SVN: r99919
Diffstat (limited to 'gcc/fortran/array.c')
-rw-r--r-- | gcc/fortran/array.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/gcc/fortran/array.c b/gcc/fortran/array.c index dc660d4..f628440 100644 --- a/gcc/fortran/array.c +++ b/gcc/fortran/array.c @@ -866,14 +866,27 @@ gfc_match_array_constructor (gfc_expr ** result) gfc_expr *expr; locus where; match m; + const char *end_delim; if (gfc_match (" (/") == MATCH_NO) - return MATCH_NO; + { + if (gfc_match (" [") == MATCH_NO) + return MATCH_NO; + else + { + if (gfc_notify_std (GFC_STD_F2003, "New in Fortran 2003: [...] " + "style array constructors at %C") == FAILURE) + return MATCH_ERROR; + end_delim = " ]"; + } + } + else + end_delim = " /)"; where = gfc_current_locus; head = tail = NULL; - if (gfc_match (" /)") == MATCH_YES) + if (gfc_match (end_delim) == MATCH_YES) goto empty; /* Special case */ for (;;) @@ -895,7 +908,7 @@ gfc_match_array_constructor (gfc_expr ** result) break; } - if (gfc_match (" /)") == MATCH_NO) + if (gfc_match (end_delim) == MATCH_NO) goto syntax; empty: |