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)() end
type t(n) integer, len :: n integer x(n) end type t type(t(1)) :: x=t(1)() 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.