]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
20180-12-08 Steven G. Kargl <kargl@gcc.gnu.org>
authorSteven G. Kargl <kargl@gcc.gnu.org>
Sun, 9 Dec 2018 04:02:44 +0000 (04:02 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Sun, 9 Dec 2018 04:02:44 +0000 (04:02 +0000)
PR fortran/87945
* decl.c (var_element): Inquiry parameters cannit be data objects.

20180-12-08  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/87945
* gfortran.dg/pr87945_1.f90: New test.
* gfortran.dg/pr87945_2.f90: New test.

From-SVN: r266915

gcc/fortran/ChangeLog
gcc/fortran/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/pr87945_1.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/pr87945_2.f90 [new file with mode: 0644]

index 47837243256159484e3f530f117ff2e00b71e0f2..8b6efd4f9d78f741ae90827f012c61796a956923 100644 (file)
@@ -1,3 +1,8 @@
+20180-12-08  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       PR fortran/87945
+       * decl.c (var_element): Inquiry parameters cannit be data objects.
+
 2018-12-08  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/88025
index ac8679886afb65ec88f09a517046c1426da722c7..6bc78cc9f54a1fbd267c5a780c3195d6d6d19311 100644 (file)
@@ -281,6 +281,14 @@ var_element (gfc_data_variable *new_var)
   if (m != MATCH_YES)
     return m;
 
+  if (new_var->expr->expr_type == EXPR_CONSTANT
+      && new_var->expr->symtree == NULL)
+    {
+      gfc_error ("Inquiry parameter cannot appear in a "
+                "data-stmt-object-list at %C");
+      return MATCH_ERROR;
+    }
+
   sym = new_var->expr->symtree->n.sym;
 
   /* Symbol should already have an associated type.  */
index 28a3e7db440c70853c78ad5278aa300e41ab61c1..bd3af9e82ee5db9813b442f518c4055ab912d8f8 100644 (file)
@@ -1,3 +1,9 @@
+20180-12-08  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       PR fortran/87945
+       * gfortran.dg/pr87945_1.f90: New test.
+       * gfortran.dg/pr87945_2.f90: New test.
+
 2018-12-08  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/88025
diff --git a/gcc/testsuite/gfortran.dg/pr87945_1.f90 b/gcc/testsuite/gfortran.dg/pr87945_1.f90
new file mode 100644 (file)
index 0000000..261312b
--- /dev/null
@@ -0,0 +1,7 @@
+! { dg-do compile }
+! PR fortran/87945
+program p
+   character :: a, b
+   data a%len /1/       ! { dg-error "parameter cannot appear in" }
+   data b%kind /'b'/    ! { dg-error "parameter cannot appear in" }
+end
diff --git a/gcc/testsuite/gfortran.dg/pr87945_2.f90 b/gcc/testsuite/gfortran.dg/pr87945_2.f90
new file mode 100644 (file)
index 0000000..952772d
--- /dev/null
@@ -0,0 +1,7 @@
+! { dg-do compile }
+! PR fortran/87945
+program p
+   character :: a, b
+   a%len = 1      ! { dg-error "to a constant expression" }
+   b%kind = 'b'   ! { dg-error "to a constant expression" }
+end