]> gcc.gnu.org Git - gcc.git/commitdiff
re PR fortran/20323 (optional arguments incorrectly accepted in specification express...
authorTobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>
Sun, 13 Mar 2005 18:37:17 +0000 (19:37 +0100)
committerTobias Schlüter <tobi@gcc.gnu.org>
Sun, 13 Mar 2005 18:37:17 +0000 (19:37 +0100)
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

gcc/fortran/ChangeLog
gcc/fortran/resolve.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/spec_expr_1.f90 [new file with mode: 0644]

index 510789120e4075864230c542faacb2659987bf3c..d4823b3e153c291715b77239b3c11cf52a6a7e4c 100644 (file)
@@ -1,3 +1,9 @@
+2005-03-13  Tobias Schl"uter  <tobias.schlueter@physik.uni-muenchen.de>
+
+       PR fortran/20323
+       * resolve.c (gfc_resolve): Check if character lengths are
+       specification expressions.
+
 2005-03-12  Tobias Schl"uter  <tobias.schlueter@physik.uni-muenchen.de>
 
        PR fortran/20361
index 126f21fd591826a9577102e8c728c8d4b4a234fd..b51206f91b748dc18d63b7bc532e5d7d87b5c1d1 100644 (file)
@@ -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);
index f2b16c433864a2ce2d1ca49f80ad25351a497f6e..d3b3eb591cca62753af7034df14b4ce3102c93be 100644 (file)
@@ -1,3 +1,8 @@
+2005-03-13  Tobias Schl"uter  <tobias.schlueter@physik.uni-muenchen.de>
+
+       PR fortran/20323
+       * gfortran.dg/spec_expr_1.f90: New test.
+
 2005-03-13  Joseph S. Myers  <joseph@codesourcery.com>
 
        PR c/20402
diff --git a/gcc/testsuite/gfortran.dg/spec_expr_1.f90 b/gcc/testsuite/gfortran.dg/spec_expr_1.f90
new file mode 100644 (file)
index 0000000..61591c3
--- /dev/null
@@ -0,0 +1,12 @@
+! { dg-do compile }
+! PR 20323
+! We didn't verify that character length expressions are specification
+! expressions.
+function testpresent(arg) 
+   integer, intent(in), optional :: arg 
+   character(len=arg) :: s ! { dg-error "OPTIONAL" }
+   logical :: testpresent 
+   testpresent=.true. 
+end function testpresent 
This page took 0.127272 seconds and 5 git commands to generate.