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

            Bug ID: 59414
           Summary: Class array pointers: compile error on valid code
                    (Different ranks in pointer assignment)
           Product: gcc
           Version: 4.8.2
            Status: UNCONFIRMED
          Severity: blocker
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: antony at cosmologist dot info

Created attachment 31394
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=31394&action=edit
OOP module implementing lists of arrays of objects

Compiler errors like

ObjectLists.f90:597.4:

    Item => L%ArrayItem(i)
    1
Error: Different ranks in pointer assignment at (1)


Code is a class array pointer to a function that returns a class array pointer:

    function ArrayItem(L, i) result(P)
    Class(TObjectList) :: L
    integer, intent(in) :: i
    Class(*), pointer :: P(:)

    select type (Point=> L%Items(i)%P)
    class is (object_array_pointer)
        P => Point%P
        class default
        stop 'TObjectList: item is not array item'
    end select

    end function ArrayItem

 ...
  class(*), pointer :: Item(:)

  Item => L%ArrayItem(i)

Code is valid and works with the Intel compiler. Complete generic list module
attached (from the widely-used but currently not gfortran-compiling CosmoMC
parameter estimation package).

Reply via email to