+2009-12-11 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/42335
+ * symbol.c (select_type_insert_tmp): Add an extra check for
+ error recovery.
+
2009-12-10 Daniel Franke <franke.daniel@gmail.com>
PR fortran/40287
{
gfc_select_type_stack *stack = select_type_stack;
for (; stack; stack = stack->prev)
- if ((*st)->n.sym == stack->selector)
+ if ((*st)->n.sym == stack->selector && stack->tmp)
*st = stack->tmp;
}
--- /dev/null
+! { dg-do compile }
+!
+! PR 42335: [OOP] ICE on CLASS IS (bad_identifier)
+!
+! Contributed by Harald Anlauf <anlauf@gmx.de>
+
+ implicit none
+ type, abstract :: vector_class
+ end type vector_class
+
+ type, extends(vector_class) :: trivial_vector_type
+ real :: elements(100)
+ end type trivial_vector_type
+
+contains
+
+ subroutine bar (this,v)
+ class(trivial_vector_type), intent(inout) :: this
+ class(vector_class), intent(in) :: v
+
+ select type (v)
+ class is (bad_id) ! { dg-error "is not an accessible derived type" }
+ this%elements(:) = v%elements(:) ! { dg-error "is not a member of" }
+ end select
+
+ end subroutine bar
+
+end