final AstMethodBodyBuilder builder = new AstMethodBodyBuilder(astBuilder, method, context); return builder.createMethodBody(parameters); return createErrorBlock(astBuilder, context, method, t);
private SynchronizedStatement transformSynchronized(final com.strobel.decompiler.ast.Expression expression, final TryCatchBlock tryCatch) { final SynchronizedStatement s = new SynchronizedStatement( expression.getOffset()); s.setExpression((Expression) transformExpression(expression.getArguments().get(0), false)); if (tryCatch.getCatchBlocks().isEmpty()) { s.setEmbeddedStatement(transformBlock(tryCatch.getTryBlock())); } else { tryCatch.setFinallyBlock(null); s.setEmbeddedStatement(new BlockStatement(transformNode(tryCatch, null))); } return s; }
arguments.add((Expression) transformExpression(e, false)); return transformCall(true, byteCode, arguments); case InvokeSpecial: case InvokeStatic: return transformCall(false, byteCode, arguments); case InvokeInterface: return transformCall(false, byteCode, arguments); final BlockStatement body = transformBlock(lambda.getBody()); final Match m = LAMBDA_BODY_PATTERN.match(body); return transformCall(false, byteCode, arguments); final Expression inlinedAssembly = inlineAssembly(byteCode, arguments);
return transformBlock((Block) node); return transformSynchronized(expression, tryCatch); final AstNode codeExpression = transformExpression((com.strobel.decompiler.ast.Expression) node, true); if (loop.getLoopType() == LoopType.PostCondition) { final DoWhileStatement doWhileStatement = new DoWhileStatement(loopCondition.getOffset()); doWhileStatement.setCondition((Expression) transformExpression(loopCondition, false)); loopStatement = doWhileStatement; whileStatement.setCondition((Expression) transformExpression(loopCondition, false)); loopStatement = whileStatement; loopStatement.setChildByRole(Roles.EMBEDDED_STATEMENT, transformBlock(loop.getBody())); (Expression) transformExpression(testCondition, false), transformBlock(trueBlock), hasFalseBlock ? transformBlock(falseBlock) : null ); final SwitchStatement switchStatement = new SwitchStatement((Expression) transformExpression(testCondition, false)); section.getStatements().add(transformBlock(caseBlock)); switchStatement.getSwitchSections().add(section); tryCatch.setTryBlock(transformBlock(tryCatchNode.getTryBlock())); final CatchClause catchClause = new CatchClause(transformBlock(catchBlock));
creation.getArguments().addAll(adjustArgumentsForMethodCall(methodReference, arguments)); creation.putUserData(Keys.MEMBER_REFERENCE, methodReference); byteCode.getOffset(), target, adjustArgumentsForMethodCall(methodReference, arguments) ); invocation = target.invoke( methodReference.getName(), convertTypeArguments(methodReference), adjustArgumentsForMethodCall(methodReference, arguments) );
private static Expression inlineAssembly(final com.strobel.decompiler.ast.Expression byteCode, final List<Expression> arguments) { if (byteCode.getOperand() != null) { arguments.add(0, new IdentifierExpression( byteCode.getOffset(), formatByteCodeOperand(byteCode.getOperand()))); } return new IdentifierExpression( byteCode.getOffset(), byteCode.getCode().getName()).invoke(arguments); }
private BlockStatement createMethodBody( final MethodDefinition method, final Iterable<ParameterDeclaration> parameters) { if (_decompileMethodBodies) { return AstMethodBodyBuilder.createMethodBody(this, method, _context, parameters); } return null; }
final TypeReference pType = p.getParameterType(); if (isCastRequired(pType, aType, true)) { arguments.set( i,
return adjustArgumentsForMethodCallCore( method.getParameters().subList(start, end), arguments.subList(start, end) return adjustArgumentsForMethodCallCore(method.getParameters(), arguments);
final BlockStatement astBlock = transformBlock(method);
arguments.add((Expression) transformExpression(e, false)); return transformCall(true, byteCode, arguments); case InvokeSpecial: case InvokeStatic: return transformCall(false, byteCode, arguments); case InvokeInterface: return transformCall(false, byteCode, arguments); final BlockStatement body = transformBlock(lambda.getBody()); final Match m = LAMBDA_BODY_PATTERN.match(body); return transformCall(false, byteCode, arguments); final Expression inlinedAssembly = inlineAssembly(byteCode, arguments);
return transformBlock((Block) node); return transformSynchronized(expression, tryCatch); final AstNode codeExpression = transformExpression((com.strobel.decompiler.ast.Expression) node, true); if (loop.getLoopType() == LoopType.PostCondition) { final DoWhileStatement doWhileStatement = new DoWhileStatement(loopCondition.getOffset()); doWhileStatement.setCondition((Expression) transformExpression(loopCondition, false)); loopStatement = doWhileStatement; whileStatement.setCondition((Expression) transformExpression(loopCondition, false)); loopStatement = whileStatement; loopStatement.setChildByRole(Roles.EMBEDDED_STATEMENT, transformBlock(loop.getBody())); (Expression) transformExpression(testCondition, false), transformBlock(trueBlock), hasFalseBlock ? transformBlock(falseBlock) : null ); final SwitchStatement switchStatement = new SwitchStatement((Expression) transformExpression(testCondition, false)); section.getStatements().add(transformBlock(caseBlock)); switchStatement.getSwitchSections().add(section); tryCatch.setTryBlock(transformBlock(tryCatchNode.getTryBlock())); final CatchClause catchClause = new CatchClause(transformBlock(catchBlock));
creation.getArguments().addAll(adjustArgumentsForMethodCall(methodReference, arguments)); creation.putUserData(Keys.MEMBER_REFERENCE, methodReference); byteCode.getOffset(), target, adjustArgumentsForMethodCall(methodReference, arguments) ); invocation = target.invoke( methodReference.getName(), convertTypeArguments(methodReference), adjustArgumentsForMethodCall(methodReference, arguments) );
private static Expression inlineAssembly(final com.strobel.decompiler.ast.Expression byteCode, final List<Expression> arguments) { if (byteCode.getOperand() != null) { arguments.add(0, new IdentifierExpression( byteCode.getOffset(), formatByteCodeOperand(byteCode.getOperand()))); } return new IdentifierExpression( byteCode.getOffset(), byteCode.getCode().getName()).invoke(arguments); }
private BlockStatement createMethodBody( final MethodDefinition method, final Iterable<ParameterDeclaration> parameters) { if (_decompileMethodBodies) { return AstMethodBodyBuilder.createMethodBody(this, method, _context, parameters); } return null; }
final TypeReference pType = p.getParameterType(); if (isCastRequired(pType, aType, true)) { arguments.set( i,
return adjustArgumentsForMethodCallCore( method.getParameters().subList(start, end), arguments.subList(start, end) return adjustArgumentsForMethodCallCore(method.getParameters(), arguments);
final BlockStatement astBlock = transformBlock(method);
arguments.add((Expression) transformExpression(e, false)); return transformCall(false, byteCode, arguments); case InvokeVirtual: case InvokeInterface: return transformCall(true, byteCode, arguments); final BlockStatement body = transformBlock(lambda.getBody()); final Match m = LAMBDA_BODY_PATTERN.match(body); return transformCall(false, byteCode, arguments); final Expression inlinedAssembly = inlineAssembly(byteCode, arguments);
private SynchronizedStatement transformSynchronized(final com.strobel.decompiler.ast.Expression expression, final TryCatchBlock tryCatch) { final SynchronizedStatement s = new SynchronizedStatement( expression.getOffset()); s.setExpression((Expression) transformExpression(expression.getArguments().get(0), false)); if (tryCatch.getCatchBlocks().isEmpty()) { s.setEmbeddedStatement(transformBlock(tryCatch.getTryBlock())); } else { tryCatch.setFinallyBlock(null); s.setEmbeddedStatement(new BlockStatement(transformNode(tryCatch, null))); } return s; }