EVALUATION
Note that the appropriate JCK test was fixed in JCK7 to check more names - before that it tested
only one field with "f>" name. However, after the change from 46.0 to different class
file versions (>=49.0) the updated test still fails:
51.0:
- ClassFormatError is thrown for a field with name "<init>"
- ClassFormatError is not thrown for a field with name "f[f", or "f[", or "[f", or "["
49.0 or 50.0:
- ClassFormatError is not thrown for a field with name "f[f", or "f[", or "[f", or "["
This behaviour contradicts to (draft) JVMS3:
--- cut ---
4.2.2 Unqualified Names
Names of methods, fields and local variables are stored as unqualified names.
Unqualified names must not contain the characters '.', ';', '[' or '/'. Method
names are further constrained so that, with the exception of the special method
names <init> and <clinit> (??3.9), they must not contain the characters '<' or
'>'.
--- cut ---
|
EVALUATION
The assembled test class in this case is using classfile version 46.0. For backward compatibility, the JVM will not change behavior in respect to older classfile versions. If the classfile versions are upgraded to >= 49 (in the *.jcod/class files), then the JVM parser applies the new logic and the test cases passes.
Reassigning to TCK.
|