com.ibm.wala.util.debug.UnimplementedError: Unhandled JDT node type org.eclipse.jdt.core.dom.ExpressionMethodReference
Looks like some Java 8 cases are missing in the JDT Java to CAst translator. I am receiving the following exception throw. I assume that the cause is input to the effect of using a method reference:
com.ibm.wala.util.debug.UnimplementedError: Unhandled JDT node type org.eclipse.jdt.core.dom.ExpressionMethodReference
at com.ibm.wala.util.debug.Assertions.UNREACHABLE(Assertions.java:55)
at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visitNode(JDTJava2CAstTranslator.java:2951)
at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.populateArguments(JDTJava2CAstTranslator.java:1615)
at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.createMethodInvocation(JDTJava2CAstTranslator.java:1571)
at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visit(JDTJava2CAstTranslator.java:1490)
at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visitNode(JDTJava2CAstTranslator.java:2902)
at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.populateArguments(JDTJava2CAstTranslator.java:1615)
at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.createMethodInvocation(JDTJava2CAstTranslator.java:1571)
at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visit(JDTJava2CAstTranslator.java:1522)
at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visitNode(JDTJava2CAstTranslator.java:2902)
at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visit(JDTJava2CAstTranslator.java:1499)
at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visitNode(JDTJava2CAstTranslator.java:2902)
at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visit(JDTJava2CAstTranslator.java:1308)
at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visit(JDTJava2CAstTranslator.java:1322)
at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visitNodeOrNodes(JDTJava2CAstTranslator.java:2958)
at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.createBlock(JDTJava2CAstTranslator.java:1275)
at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visit(JDTJava2CAstTranslator.java:1280)
at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visitNode(JDTJava2CAstTranslator.java:2862)
at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visit(JDTJava2CAstTranslator.java:806)
at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.createClassDeclaration(JDTJava2CAstTranslator.java:485)
at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visitTypeDecl(JDTJava2CAstTranslator.java:408)
at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visit(JDTJava2CAstTranslator.java:2829)
at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.translateToCAst(JDTJava2CAstTranslator.java:261)
at com.ibm.wala.cast.java.translator.jdt.JDTSourceModuleTranslator$JdtAstToIR.acceptAST(JDTSourceModuleTranslator.java:92)
at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:907)
at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:588)
at org.eclipse.jdt.core.dom.ASTParser.createASTs(ASTParser.java:899)
at com.ibm.wala.cast.java.translator.jdt.JDTSourceModuleTranslator.loadAllSources(JDTSourceModuleTranslator.java:182)
at com.ibm.wala.cast.java.loader.JavaSourceLoaderImpl.loadAllSources(JavaSourceLoaderImpl.java:506)
at com.ibm.wala.classLoader.ClassLoaderImpl.init(ClassLoaderImpl.java:521)
at com.ibm.wala.cast.java.loader.JavaSourceLoaderImpl.init(JavaSourceLoaderImpl.java:517)
at com.ibm.wala.cast.java.translator.jdt.JDTClassLoaderFactory.makeNewClassLoader(JDTClassLoaderFactory.java:70)
at com.ibm.wala.classLoader.ClassLoaderFactoryImpl.getLoader(ClassLoaderFactoryImpl.java:69)
at com.ibm.wala.ipa.cha.ClassHierarchy.<init>(ClassHierarchy.java:231)
at com.ibm.wala.ipa.cha.ClassHierarchy.<init>(ClassHierarchy.java:175)
at com.ibm.wala.ipa.cha.ClassHierarchyFactory.make(ClassHierarchyFactory.java:54)
at com.ibm.wala.client.AbstractAnalysisEngine.buildClassHierarchy(AbstractAnalysisEngine.java:186)
https://github.com/wala/WALA/blob/5b6e6aefa069f341cb5b612f245b01953c519d61/com.ibm.wala.cast.java.ecj/src/com/ibm/wala/cast/java/translator/jdt/JDTJava2CAstTranslator.java#L2933
Indeed such cases are missing. The JDT front end was created back in the time of Java 5, and has not been extended significantly since.
I thought that perhaps this case could translate to a method invocation but I wasn't quite sure since its execution is deferred.