aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/primary.c
diff options
context:
space:
mode:
authorTobias Burnus <tobias@codesourcery.com>2020-01-03 08:08:30 +0000
committerTobias Burnus <burnus@gcc.gnu.org>2020-01-03 09:08:30 +0100
commit4d124378848e82e58f1349b44822cc7b1210de1e (patch)
treea639757f5a1c9424f7007323e1bec9db3de8c610 /gcc/fortran/primary.c
parent208cb81f98da659cca6e9b8bfec524e3f5aaffcf (diff)
downloadgcc-4d124378848e82e58f1349b44822cc7b1210de1e.zip
gcc-4d124378848e82e58f1349b44822cc7b1210de1e.tar.gz
gcc-4d124378848e82e58f1349b44822cc7b1210de1e.tar.bz2
Fortran] PR 92994 – add more ASSOCIATE checks
PR fortran/92994 * primary.c (gfc_match_rvalue): Add some flavor checks gfc_matching_procptr_assignment. * resolve.c (resolve_assoc_var): Add more checks for invalid targets. PR fortran/92994 * gfortran.dg/associate_50.f90: Update dg-error. * gfortran.dg/associate_51.f90: New. From-SVN: r279853
Diffstat (limited to 'gcc/fortran/primary.c')
-rw-r--r--gcc/fortran/primary.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c
index 189b904..e2b6fcb 100644
--- a/gcc/fortran/primary.c
+++ b/gcc/fortran/primary.c
@@ -3447,7 +3447,19 @@ gfc_match_rvalue (gfc_expr **result)
}
if (gfc_matching_procptr_assignment)
- goto procptr0;
+ {
+ /* It can be a procedure or a derived-type procedure or a not-yet-known
+ type. */
+ if (sym->attr.flavor != FL_UNKNOWN
+ && sym->attr.flavor != FL_PROCEDURE
+ && sym->attr.flavor != FL_PARAMETER
+ && sym->attr.flavor != FL_VARIABLE)
+ {
+ gfc_error ("Symbol at %C is not appropriate for an expression");
+ return MATCH_ERROR;
+ }
+ goto procptr0;
+ }
if (sym->attr.function || sym->attr.external || sym->attr.intrinsic)
goto function0;