diff options
author | Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de> | 2005-03-13 19:37:17 +0100 |
---|---|---|
committer | Tobias Schlüter <tobi@gcc.gnu.org> | 2005-03-13 19:37:17 +0100 |
commit | 8f9c06ca82a4d5b10fd2b88e3267036c4f12c779 (patch) | |
tree | 83a2b98523a261d1c0b3aa8e486219f6666e4674 /gcc/fortran/resolve.c | |
parent | 08cee789cdb1b64a6e07a0745489b26f6ddd0720 (diff) | |
download | gcc-8f9c06ca82a4d5b10fd2b88e3267036c4f12c779.zip gcc-8f9c06ca82a4d5b10fd2b88e3267036c4f12c779.tar.gz gcc-8f9c06ca82a4d5b10fd2b88e3267036c4f12c779.tar.bz2 |
re PR fortran/20323 (optional arguments incorrectly accepted in specification expressions)
fortran/
PR fortran/20323
* resolve.c (gfc_resolve): Check if character lengths are
specification expressions.
testsuite/
PR fortran/20323
* gfortran.dg/spec_expr_1.f90: New test.
From-SVN: r96382
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 126f21f..b51206f 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -4749,10 +4749,11 @@ gfc_resolve (gfc_namespace * ns) if (cl->length == NULL || gfc_resolve_expr (cl->length) == FAILURE) continue; - if (cl->length->ts.type != BT_INTEGER) - gfc_error - ("Character length specification at %L must be of type INTEGER", - &cl->length->where); + if (gfc_simplify_expr (cl->length, 0) == FAILURE) + continue; + + if (gfc_specification_expr (cl->length) == FAILURE) + continue; } gfc_traverse_ns (ns, resolve_values); |