soot-oss / soot

Soot - A Java optimization framework
GNU Lesser General Public License v2.1
2.85k stars 706 forks source link

Jimple parsing exception #2018

Open michaelphop opened 10 months ago

michaelphop commented 10 months ago

I have the following jimple code created by soot:

        $r4 = dynamicinvoke "apply" <java.util.function.Function ()>() <java.lang.invoke.LambdaMetafactory: java.lang.invoke.CallSite metafactory(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.invoke.MethodType,java.lang.invoke.MethodHandle,java.lang.invoke.MethodType)>(methodtype: java.lang.Object __METHODTYPE__(java.lang.Object), methodhandle: "REF_INVOKE_STATIC" <org.springframework.boot.SpringApplication: org.springframework.boot.BootstrapRegistryInitializer lambda$getBootstrapRegistryInitializersFromSpringFactories$0(org.springframework.boot.Bootstrapper)>, methodtype: org.springframework.boot.BootstrapRegistryInitializer __METHODTYPE__(org.springframework.boot.Bootstrapper));

When converting it to class (from jimple file) I get the exception: "[163,328] expecting: ')'" here: https://github.com/soot-oss/soot/blob/942712753267de03b1091a47d6360a7ebfc4333c/src/main/java/soot/JimpleClassSource.java#L109

Caused by: soot.jimple.parser.parser.ParserException: [163,328] expecting: ')'
    at soot.jimple.parser.parser.Parser.parse(Parser.java:1455)
    at soot.jimple.parser.JimpleAST.<init>(JimpleAST.java:60)
    at soot.JimpleClassSource.resolve(JimpleClassSource.java:64)

What can be the reason? (I made sure that the parentheses are balanced )

I passed this configuration as well:

set_src_prec(Options.src_prec_jimple)