Structure constructors for length-parameterized types

It isn’t just empty structure constructors (TPR 25084) pgfortran 17.10 doesn’t understand. The following programs are also incorrectly rejected.

  type t(n)
    integer, len :: n
    integer x(n)
  end type t
  type(t(1)) x
  x=t(1)([0])
end



  type t(n)
    integer, len :: n
    integer x(n)
  end type t
  type(t(1)) :: x=t(1)([0])
end

The first is rejected with the message

PGF90-S-0099-Illegal use of derived type

and the second with the message

PGF90-S-0066-Too few data constants in initialization statement

Intriguingly, the first program is accepted if the declaration statement for ‘x’ includes ‘::’.

The second program is accepted if the type is kind-parameterized, but the first again (with kind-parameterized type) is rejected unless ‘::’ is used.

I opened a bug for this. FS#25099.