diff options
author | Janus Weil <janus@gcc.gnu.org> | 2014-12-22 19:15:08 +0100 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2014-12-22 19:15:08 +0100 |
commit | 0a6f14996acf4acf2788be390d84624959f6134d (patch) | |
tree | 5f916825fc5299cfe1cdd53287986220f3e27af3 /gcc/fortran/check.c | |
parent | f37f5fb81c7f1a4f9589af2be8f4dc32f43d9d91 (diff) | |
download | gcc-0a6f14996acf4acf2788be390d84624959f6134d.zip gcc-0a6f14996acf4acf2788be390d84624959f6134d.tar.gz gcc-0a6f14996acf4acf2788be390d84624959f6134d.tar.bz2 |
re PR fortran/63363 (No diagnostic for passing function as actual argument to KIND)
2014-12-22 Janus Weil <janus@gcc.gnu.org>
PR fortran/63363
* check.c (gfc_check_kind): Reject polymorphic and non-data arguments.
2014-12-22 Janus Weil <janus@gcc.gnu.org>
PR fortran/63363
* gfortran.dg/kind_1.f90: New.
From-SVN: r219027
Diffstat (limited to 'gcc/fortran/check.c')
-rw-r--r-- | gcc/fortran/check.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index 95c5223..d2f35ec 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -2531,13 +2531,20 @@ gfc_check_kill_sub (gfc_expr *pid, gfc_expr *sig, gfc_expr *status) bool gfc_check_kind (gfc_expr *x) { - if (x->ts.type == BT_DERIVED) + if (x->ts.type == BT_DERIVED || x->ts.type == BT_CLASS) { - gfc_error ("%qs argument of %qs intrinsic at %L must be a " - "non-derived type", gfc_current_intrinsic_arg[0]->name, + gfc_error ("%qs argument of %qs intrinsic at %L must be of " + "intrinsic type", gfc_current_intrinsic_arg[0]->name, gfc_current_intrinsic, &x->where); return false; } + if (x->ts.type == BT_PROCEDURE) + { + gfc_error ("%qs argument of %qs intrinsic at %L must be a data entity", + gfc_current_intrinsic_arg[0]->name, gfc_current_intrinsic, + &x->where); + return false; + } return true; } |