]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR fortran/69499 ([F03] ICE-on-invalid on combining select type with...
authorSteven G. Kargl <kargl@gcc.gnu.org>
Thu, 20 Jun 2019 23:39:29 +0000 (23:39 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Thu, 20 Jun 2019 23:39:29 +0000 (23:39 +0000)
2019-06-20  Steven G. Kargl  <kargl@gcc.gnu.org>

Backport from mainline
PR fortran/69499
* match.c (gfc_match_select_type):  SELECT TYPE is an executable
statement, and cannot appear in MODULE or SUBMODULE scope.

2019-06-20  Steven G. Kargl  <kargl@gcc.gnu.org>

Backport from mainline
PR fortran/69499
* gfortran.dg/pr69499.f90: New test.
* gfortran.dg/module_error_1.f90: Update dg-error string.

From-SVN: r272531

gcc/fortran/ChangeLog
gcc/fortran/match.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/module_error_1.f90
gcc/testsuite/gfortran.dg/pr69499.f90 [new file with mode: 0644]

index 0395a1a7abc9f93c42765c03230b232076e9a802..a7e08d4dd535271b91814fcbb440f8e2fee83040 100644 (file)
@@ -1,3 +1,10 @@
+2019-06-20  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       Backport from mainline
+       PR fortran/69499
+       * match.c (gfc_match_select_type):  SELECT TYPE is an executable 
+       statement, and cannot appear in MODULE or SUBMODULE scope.
+
 2019-06-20  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        Backport from mainline
index eba428fd084171686cf2ab346a3dfdcf28f55aa1..bc780ce2e4a833671d38a21141d09f2ad7d9768d 100644 (file)
@@ -6186,6 +6186,13 @@ gfc_match_select_type (void)
   if (m != MATCH_YES)
     return m;
 
+  if (gfc_current_state() == COMP_MODULE
+      || gfc_current_state() == COMP_SUBMODULE)
+    {
+      gfc_error ("SELECT TYPE at %C cannot appear in this scope");
+      return MATCH_ERROR;
+    }
+
   gfc_current_ns = gfc_build_block_ns (ns);
   m = gfc_match (" %n => %e", name, &expr2);
   if (m == MATCH_YES)
index f42fe5887e6395e172dc6ef0b6bc4da468e8d45c..5536a17de0aa4e9f01f08811731de0c162d75fdf 100644 (file)
@@ -1,3 +1,10 @@
+2019-06-20  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       Backport from mainline
+       PR fortran/69499
+       * gfortran.dg/pr69499.f90: New test.
+       * gfortran.dg/module_error_1.f90: Update dg-error string.
+
 2019-06-20  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        Backport from mainline
index 84decc0a5710e1d9acafaf7c71f36f24e4fd92b7..1792be6e9faf937b03c70621be427c489a0e8169 100644 (file)
@@ -1,5 +1,5 @@
 ! { dg-do compile }
 ! PR fortran/50627
 module kernels
-      select type (args) ! { dg-error "Unexpected SELECT TYPE" }
+      select type (args) ! { dg-error "cannot appear in this scope" }
 end module kernels
diff --git a/gcc/testsuite/gfortran.dg/pr69499.f90 b/gcc/testsuite/gfortran.dg/pr69499.f90
new file mode 100644 (file)
index 0000000..169c6ce
--- /dev/null
@@ -0,0 +1,7 @@
+! { dg-do compile }
+! PR fortran/69499
+! Contributed by Gerhard Steinmetz.
+module m
+   class(*) :: z        ! { dg-error "must be dummy, allocatable or pointer" }
+   select type (x => z) ! { dg-error "cannot appear in this scope" }
+end