-
Bug
-
Resolution: Fixed
-
P3
-
asm_tools_6.0
-
None
Jdec sometimes generates class names matching jcoder keywords or constant values, for example:
$ cat Method.java I.java z.java
// JcodTokens.ConstType.CONSTANT_METHOD
class Method {}
// Tables.StackMapType.ITEM_Integer
interface I {}
// JcodTokens.Token.ZEROINDEX
class z {}
$ javac Method.java I.java z.java
$ java -jar asmtools.jar jdec Method.class > Method.jcod
$ java -jar asmtools.jar jcoder Method.jcod
org.openjdk.asmtools.jcoder.SyntaxError
[...]
Method.jcod:1: Name expected.
class Method {
^
1 error
$ java -jar asmtools.jar jdec I.class > I.jcod
$ java -jar asmtools.jar jcoder I.jcod
org.openjdk.asmtools.jcoder.SyntaxError
[...]
I.jcod:1: Name expected.
class I {
^
1 error
$ java -jar asmtools.jar jdec z.class > z.jcod
$ java -jar asmtools.jar jcoder z.jcod
org.openjdk.asmtools.jcoder.SyntaxError
[...]
z.jcod:1: Name expected.
class z {
^
1 error
A possible fix (in ClassData.decodeClass()) would be to make jdec print the file name instead of the class name when the latter matches a jcoder keyword or constant value.
$ cat Method.java I.java z.java
// JcodTokens.ConstType.CONSTANT_METHOD
class Method {}
// Tables.StackMapType.ITEM_Integer
interface I {}
// JcodTokens.Token.ZEROINDEX
class z {}
$ javac Method.java I.java z.java
$ java -jar asmtools.jar jdec Method.class > Method.jcod
$ java -jar asmtools.jar jcoder Method.jcod
org.openjdk.asmtools.jcoder.SyntaxError
[...]
Method.jcod:1: Name expected.
class Method {
^
1 error
$ java -jar asmtools.jar jdec I.class > I.jcod
$ java -jar asmtools.jar jcoder I.jcod
org.openjdk.asmtools.jcoder.SyntaxError
[...]
I.jcod:1: Name expected.
class I {
^
1 error
$ java -jar asmtools.jar jdec z.class > z.jcod
$ java -jar asmtools.jar jcoder z.jcod
org.openjdk.asmtools.jcoder.SyntaxError
[...]
z.jcod:1: Name expected.
class z {
^
1 error
A possible fix (in ClassData.decodeClass()) would be to make jdec print the file name instead of the class name when the latter matches a jcoder keyword or constant value.
- links to