aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/match.c
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2019-06-19 18:18:40 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2019-06-19 18:18:40 +0000
commitef3e6aa32043fd8a285342aa6c668b636f5f0d41 (patch)
tree5d7ba6731d31e1f5649376b330e136395a152139 /gcc/fortran/match.c
parentc9935123aef8eac547cdd0e8b06811fc776a6b32 (diff)
downloadgcc-ef3e6aa32043fd8a285342aa6c668b636f5f0d41.zip
gcc-ef3e6aa32043fd8a285342aa6c668b636f5f0d41.tar.gz
gcc-ef3e6aa32043fd8a285342aa6c668b636f5f0d41.tar.bz2
re PR fortran/69499 ([F03] ICE-on-invalid on combining select type with wrong statement)
2019-06-19 Steven G. Kargl <kargl@gcc.gnu.org> 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-19 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/69499 * gfortran.dg/pr69499.f90: New test. * gfortran.dg/module_error_1.f90: Update dg-error string. From-SVN: r272482
Diffstat (limited to 'gcc/fortran/match.c')
-rw-r--r--gcc/fortran/match.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c
index 69698e5..1c08da7 100644
--- a/gcc/fortran/match.c
+++ b/gcc/fortran/match.c
@@ -6219,6 +6219,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)