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.