+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-19 Janus Weil <janus@gcc.gnu.org>
PR fortran/64209
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;
}
+2014-12-22 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/63363
+ * gfortran.dg/kind_1.f90: New.
+
2014-12-22 Oleg Endo <olegendo@gcc.gnu.org>
PR target/52933
--- /dev/null
+! { dg-do compile }
+!
+! PR 63363: No diagnostic for passing function as actual argument to KIND
+!
+! Contributed by Ian Harvey <ian_harvey@bigpond.com>
+
+ type :: t
+ end type
+ type(t) :: d
+ class(*), allocatable :: c
+
+ print *, KIND(d) ! { dg-error "must be of intrinsic type" }
+ print *, KIND(c) ! { dg-error "must be of intrinsic type" }
+
+ print *, KIND(f) ! { dg-error "must be a data entity" }
+ print *, KIND(f())
+ print *, KIND(s) ! { dg-error "must be a data entity" }
+contains
+ FUNCTION f()
+ INTEGER(SELECTED_INT_KIND(4)) :: f
+ END FUNCTION
+ subroutine s
+ end subroutine
+END