diff options
author | Tobias Burnus <tobias@codesourcery.com> | 2020-01-03 08:08:30 +0000 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2020-01-03 09:08:30 +0100 |
commit | 4d124378848e82e58f1349b44822cc7b1210de1e (patch) | |
tree | a639757f5a1c9424f7007323e1bec9db3de8c610 /gcc/fortran/primary.c | |
parent | 208cb81f98da659cca6e9b8bfec524e3f5aaffcf (diff) | |
download | gcc-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.c | 14 |
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; |