+2015-06-08 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/66245
+ * match.c (gfc_match_type_is, gfc_match_class_is): Check if the
+ return type spec or derived type spec is validate.
+
2015-06-06 Thomas Koenig <tkoenig@netcologne.de>
PR fortran/47659
c = gfc_get_case ();
c->where = gfc_current_locus;
- if (gfc_match_type_spec (&c->ts) == MATCH_ERROR)
+ m = gfc_match_type_spec (&c->ts);
+ if (m == MATCH_NO)
+ goto syntax;
+ if (m == MATCH_ERROR)
goto cleanup;
if (gfc_match_char (')') != MATCH_YES)
c = gfc_get_case ();
c->where = gfc_current_locus;
- if (match_derived_type_spec (&c->ts) == MATCH_ERROR)
+ m = match_derived_type_spec (&c->ts);
+ if (m == MATCH_NO)
+ goto syntax;
+ if (m == MATCH_ERROR)
goto cleanup;
if (c->ts.type == BT_DERIVED)
+2015-06-08 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/66245
+ * gfortran.dg/class_is_1.f90: New test.
+ * gfortran.dg/type_is_1.f90: Ditto.
+
2015-06-08 Marek Polacek <polacek@redhat.com>
PR c/66415
--- /dev/null
+! { dg-do compile }
+! PR fortran/66245
+! Original testcase by Gerhard Steinmetz
+! <gerhard dot steinmetz dot fortran at t-online dot de>
+program p
+ type t; end type
+ class(t), allocatable :: x
+ call s
+ contains
+ subroutine s
+ select type ( x )
+ class is ( ) ! { dg-error "error in CLASS IS" }
+ end select
+ end subroutine s
+end program p
--- /dev/null
+! { dg-do compile }
+! PR fortran/66245
+! Original testcase by Gerhard Steinmetz
+! <gerhard dot steinmetz dot fortran at t-online dot de>
+program p
+ type t; end type
+ class(t), allocatable :: x
+ call s
+ contains
+ subroutine s
+ select type ( x )
+ type is ( ) ! { dg-error "error in TYPE IS" }
+ end select
+ end subroutine s
+end program p