https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84093
--- Comment #2 from Neil Carlson ---
The forced cascade of keyword use is rather annoying, so perhaps someone was
thinking the current gfortran behavior is a useful extension, and it almost is.
But consider this example:
type :: parent
type(parent), pointer :: next => null()
end type
type, extends(parent) :: child
integer :: n
end type
type(child) :: c
type(parent), pointer :: p
allocate(p)
allocate(p%next)
c = child(parent=p,n=1)
if (.not.associated(c%next,p%next)) stop 1
c = child(p,1)
if (.not.associated(c%next,p)) stop 2
end
GFortran doesn't distinguish between the two constructor expressions, treating
the second the same as the first, when in fact they are quite different.