An inquiry parameter cannot be a data object.

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

        PR fortran/87945
        * decl.c (var_element): Inquiry parameters cannit be data objects.

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

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

-- 
Steve
Index: gcc/fortran/decl.c
===================================================================
--- gcc/fortran/decl.c	(revision 266912)
+++ gcc/fortran/decl.c	(working copy)
@@ -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: gcc/testsuite/gfortran.dg/pr87945_1.f90
===================================================================
--- gcc/testsuite/gfortran.dg/pr87945_1.f90	(nonexistent)
+++ gcc/testsuite/gfortran.dg/pr87945_1.f90	(working copy)
@@ -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
Index: gcc/testsuite/gfortran.dg/pr87945_2.f90
===================================================================
--- gcc/testsuite/gfortran.dg/pr87945_2.f90	(nonexistent)
+++ gcc/testsuite/gfortran.dg/pr87945_2.f90	(working copy)
@@ -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

Reply via email to