------- Comment #1 from burnus at gcc dot gnu dot org 2010-02-28 10:18 ------- Possibly related: implicit none type, abstract :: parent integer :: i end type
type, extends(parent) :: child end type type(child) :: c1, c1a class(child), allocatable :: c2 print *, c1%parent%i print *, c2%parent%i c1a%parent = c1%parent !<<< LHS & RHS invalid c1a%parent = c2%parent !<<< LHS invalid end Here, c1a%parent and c1%parent is clearly invalid according to C613; for the rest - I don't know. See also PR 43193. It boils down to understand what makes data-ref polymorphic - maybe my renewed interpretation of PR 43193 is wrong and the patch in PR 43193 is still correct?!? R612 data-ref is part-ref % part-ref R613 part-ref is part-name [ ( section-subscript-list ) ] C611 (R612) If the rightmost part-name is of abstract type, data-ref shall be polymorphic. If one finally understands what exactly is meant by this, one should add a proper error message to gfc_match_varspec, which saves one of having the check all over the place. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43207