This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug fortran/41583] New: [OOP] TYPE IS rejected because of way vtable index is implemented


The following program is valid but it fails to compile due to the way the
indices in vtable are implemented.

Cf. http://gcc.gnu.org/ml/fortran/2009-09/msg00298.html

========= File: bb.f90 =========
module m
type t
end type t
end module m
========= File: cc.f90 =========
module m2
  use m
  type, extends(t) :: t2
  end type t2
end module m2
========= File: dd.f90 =========
use m
use m2
type,extends(t) :: t3
end type t3

integer :: i
class(t), allocatable :: a
allocate(t3 :: a)
select type(a)
  type is(t)
    i = 1
  type is(t2)
    i = 2
  type is(t3)
    i = 3
end select
print *, i
end
========================

The error message is:

$ gfortran bb.f90 cc.f90 dd.f90
dd.f90:10.10:

  type is(t)
          1
dd.f90:12.10:

  type is(t2)
          2
Error: CASE label at (1) overlaps with CASE label at (2)


-- 
           Summary: [OOP] TYPE IS rejected because of way vtable index is
                    implemented
           Product: gcc
           Version: 4.5.0
            Status: UNCONFIRMED
          Keywords: rejects-valid
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: burnus at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41583


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]