That could be one of very many edge conditions in the JVMS that are not diagnosed directly by a validation, but that will eventually cause an error when the broken classfile is further used.
I don’t think there needs to be a special rule for this. We don’t try to comprehensively diagnose all “impossible-to-use” classfiles. On 9 Feb 2022, at 13:50, Frederic Parain wrote: > There's a weird case that seems to be allowed by the Value Objects JVMS draft: > > An abstract class can declare non-static fields, which means it won't > have the ACC_PERMITS_VALUE flag set, but also declare that it implements > the ValueObject interface. > > The combination looks just wrong, because no class can subclass such class: > - identity classes are not allowed because of the presence of > the ValueObject interface > - value classes are not allowed because of the absence of > ACC_PERMITS_VALUE > > I've looked for a rule that would prohibit such combination in the > JVMS draft but couldn't find one. > > Did I miss something? > > Fred