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 4783724..8b6efd4 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 ac86798..6bc78cc 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 28a3e7d..bd3af9e 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