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

            Bug ID: 58331
           Summary: [OOP] Bogus rank checking with explicit-/assumed-size
                    arrays and CLASS
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Keywords: rejects-valid
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: burnus at gcc dot gnu.org
                CC: janus at gcc dot gnu.org

The following code seems to be valid and to work, except for the bogus error
message:

Error: Rank mismatch in argument 'a' at (1) (rank-1 and rank-2)


Reported by Simon Geard at
https://groups.google.com/forum/#!topic/comp.lang.fortran/5oi9Sa4lnX4


module mymod
   implicit none
contains
   subroutine mysub(a, n)
     integer, intent(in)  :: n
     class(*), intent(in) :: a(n)

     select type(a)
     type is(integer)
         print *,'a is integer'
     class default
         print *,'a is unsupported type'
     end select
   end subroutine mysub
end module mymod

program upv
   use mymod
   implicit none
   integer :: a(3), b(2,2)

   a = [1, 2, 3]
   call mysub(a,3)

   b = reshape([1, 2, 3, 4], [2,2])
   call mysub(b,4)
end program upv

Reply via email to