IDEA-151950 Decompiler doesn't work for classes from JDK 9 - support java 9 string...
[idea/community.git] / plugins / java-decompiler / engine / src / org / jetbrains / java / decompiler / modules / decompiler / ExprProcessor.java
index cbc66c78c63af685e8694049ce8068d04883f90c..008d0bb794aba401a80b3ec7af8ad772ee41bee6 100644 (file)
@@ -567,21 +567,14 @@ public class ExprProcessor implements CodeConstants {
         case opc_invokeinterface:
         case opc_invokedynamic:
           if (instr.opcode != opc_invokedynamic || instr.bytecode_version >= CodeConstants.BYTECODE_JAVA_7) {
-
             LinkConstant invoke_constant = pool.getLinkConstant(instr.getOperand(0));
-            int dynamic_invokation_type = -1;
 
+            List<PooledConstant> bootstrap_arguments = null;
             if (instr.opcode == opc_invokedynamic && bootstrap != null) {
-              List<PooledConstant> bootstrap_arguments = bootstrap.getMethodArguments(invoke_constant.index1);
-              if (bootstrap_arguments.size() > 1) { // INVOKEDYNAMIC is used not only for lambdas
-                PooledConstant link = bootstrap_arguments.get(1);
-                if (link instanceof LinkConstant) {
-                  dynamic_invokation_type = ((LinkConstant)link).index1;
-                }
-              }
+              bootstrap_arguments = bootstrap.getMethodArguments(invoke_constant.index1);
             }
 
-            InvocationExprent exprinv = new InvocationExprent(instr.opcode, invoke_constant, stack, dynamic_invokation_type, bytecode_offsets);
+            InvocationExprent exprinv = new InvocationExprent(instr.opcode, invoke_constant, bootstrap_arguments, stack, bytecode_offsets);
             if (exprinv.getDescriptor().ret.type == CodeConstants.TYPE_VOID) {
               exprlist.add(exprinv);
             }