https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62125

            Bug ID: 62125
           Summary: Nested select type not accepted (rejects valid)
           Product: gcc
           Version: fortran-dev
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mrestelli at gmail dot com

Hi, I see that gfortran does not compile the attached code, which
seems fine to me.


$ gfortran -c test.f90 -o test.o 
test.f90:31.21:

       write(*,*) u%x
                     1
Error: 'x' at (1) is not a member of the 't1' structure


$ gfortran --version           
GNU Fortran (GCC) 4.10.0 20140812 (experimental)
Copyright (C) 2014 Free Software Foundation, Inc.


(As a reference, ifort accepts this code.)


Here is the code:


module m
 implicit none

 type, abstract :: t1
  logical :: l
 end type t1

 type, extends(t1), abstract :: t2
  integer :: i
 end type t2

 type, extends(t2), abstract :: t3
  real :: x
 end type t3

contains

 subroutine s(u)
  class(t1), intent(in) :: u

   write(*,*) u%l

   select type(u)
    class is(t2)

     write(*,*) u%i

     select type(u)
      class is(t3)

       write(*,*) u%x

     end select

   end select

 end subroutine s

end module m

Reply via email to