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.