aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/check.c
diff options
context:
space:
mode:
authorJanus Weil <janus@gcc.gnu.org>2014-12-22 19:15:08 +0100
committerJanus Weil <janus@gcc.gnu.org>2014-12-22 19:15:08 +0100
commit0a6f14996acf4acf2788be390d84624959f6134d (patch)
tree5f916825fc5299cfe1cdd53287986220f3e27af3 /gcc/fortran/check.c
parentf37f5fb81c7f1a4f9589af2be8f4dc32f43d9d91 (diff)
downloadgcc-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.c13
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;
}