val aiResult = BaseAI(m, d)
val tac @ TACode(params, code, _, cfg, ehs, _) =
TACAI(m, project.classHierarchy, aiResult)(Nil)
if (toString) Console.out.println(m.toJava(tac.toString))
(
ToTxt(params, code, cfg, skipParams = false, true, true).mkString("\n”),
String.java
String.class
it looks like this:
"
is escaped, so until another "
appears everything will be seen as a string.
This is indeed wrong. When passing a String argument to a MethodDescriptor you have to pass it in JVM notation.
MethodDescriptor("([Ljava/lang/String;)V")
However, I would not recommend doing this because it's rather error-prone. You should use the other apply methods MethodDescriptor offers. Here are two examples:
MethodDescriptor(ArrayType(ObjectType.String), VoidType) // first parameter represents the parameter list, the second the return type
MethodDescriptor(RefArray(LongType,ByteType,ObjectType.String), BooleanType) // a method with (long, byte, String): boolean
libraryClassFilesAreInterfacesOnly
actually doesn’t change how the classes are loaded - it basically reflects how the classes are expected to be loaded. That is, it might be possible that the “discarding" loader was used but libraryClassFilesAreInterfacesOnly is still false.