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

             Bug #: 51383
           Summary: arrays of extended types interact break associations
                    with arrays
    Classification: Unclassified
           Product: gcc
           Version: 4.6.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: kaiserkar...@yahoo.com


An ASSOCIATE block that associates a name with an array of derived types causes
a compiler error.

It is easily reproduced with the following short program:

program extend
   type :: a
      integer :: i
   end type a
   type, extends (a) :: b
      integer :: j
   end type b
   type (a) :: x(2)
   type (b) :: y(2)
   associate (x1 => x, y1 => y)
      x1(1)%i = 1
      ! Commenting out the following line will avoid the error
      y1(1)%i = 2
   end associate
end program extend

In my version, I get the following error:
## start error message ##
associate.f90:1.14:

program extend
              1
Internal Error at (1):
find_array_spec(): Component not found
## end error message ##

This example is trivial, of course (just use y instead of y1 and all is well),
but if the association is something like
  associate (y1 => really_long%complicated(3)%variable(2)%array)
it becomes more than a triviality....

As can be seen from the example above, this bug does not occur for "normal"
derived types, only ones created with the EXTENDS key word.

Reply via email to