Class AstMethodBodyBuilder
java.lang.Object
com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static final classprivate static final class -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final AstBuilderprivate final DecompilerContextprivate final MethodDefinitionprivate final MetadataParserprivate static final INodeprivate static final INode -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivateAstMethodBodyBuilder(AstBuilder astBuilder, MethodDefinition method, DecompilerContext context) -
Method Summary
Modifier and TypeMethodDescriptionprivate List<Expression> adjustArgumentsForMethodCall(MethodReference method, List<Expression> arguments) private List<Expression> adjustArgumentsForMethodCallCore(List<ParameterDefinition> parameters, List<Expression> arguments) convertTypeArguments(MethodReference methodReference) private static BlockStatementcreateErrorBlock(AstBuilder astBuilder, DecompilerContext context, MethodDefinition method, Throwable t) static BlockStatementcreateMethodBody(AstBuilder astBuilder, MethodDefinition method, DecompilerContext context, Iterable<ParameterDeclaration> parameters) private BlockStatementcreateMethodBody(Iterable<ParameterDeclaration> parameters) private voiddeclareVariables(AstMethodBodyBuilder.VariableInfo<?> vi, BlockStatement astBlock) private static ExpressioninlineAssembly(Expression byteCode, List<Expression> arguments) private booleanisCastRequired(TypeReference targetType, TypeReference sourceType, boolean exactMatch) private voidnameVariables(Block body, AstMethodBodyBuilder.VariableInfo<?> vi, Set<String> reservedNames) private voidprivate <T> voidpopulateVariables0(AstMethodBodyBuilder.VariableInfo<T> vi, Block body) private BlockStatementtransformBlock(Block block) private AstNodetransformByteCode(Expression byteCode, boolean isTopLevel) private ExpressiontransformCall(boolean isVirtual, Expression byteCode, List<Expression> arguments) private AstNodetransformExpression(Expression e, boolean isTopLevel) private StatementtransformNode(Node node, Node next) private SynchronizedStatementtransformSynchronized(Expression expression, TryCatchBlock tryCatch) private voidupdateParameterDeclarations(AstMethodBodyBuilder.VariableInfo<?> vi, Iterable<ParameterDeclaration> parameterDeclarations)
-
Field Details
-
_astBuilder
-
_method
-
_parser
-
_context
-
_localVariablesToDefine
-
LAMBDA_BODY_PATTERN
-
EMPTY_LAMBDA_BODY_PATTERN
-
-
Constructor Details
-
AstMethodBodyBuilder
private AstMethodBodyBuilder(AstBuilder astBuilder, MethodDefinition method, DecompilerContext context)
-
-
Method Details
-
createMethodBody
public static BlockStatement createMethodBody(AstBuilder astBuilder, MethodDefinition method, DecompilerContext context, Iterable<ParameterDeclaration> parameters) -
createErrorBlock
private static BlockStatement createErrorBlock(AstBuilder astBuilder, DecompilerContext context, MethodDefinition method, Throwable t) -
createMethodBody
-
updateParameterDeclarations
private void updateParameterDeclarations(AstMethodBodyBuilder.VariableInfo<?> vi, Iterable<ParameterDeclaration> parameterDeclarations) -
declareVariables
-
transformBlock
-
transformNode
-
transformSynchronized
-
transformExpression
-
transformByteCode
-
transformCall
private Expression transformCall(boolean isVirtual, Expression byteCode, List<Expression> arguments) -
convertTypeArguments
-
adjustArgumentsForMethodCall
private List<Expression> adjustArgumentsForMethodCall(MethodReference method, List<Expression> arguments) -
adjustArgumentsForMethodCallCore
private List<Expression> adjustArgumentsForMethodCallCore(List<ParameterDefinition> parameters, List<Expression> arguments) -
isCastRequired
private boolean isCastRequired(TypeReference targetType, TypeReference sourceType, boolean exactMatch) -
inlineAssembly
-
populateVariables
-
populateVariables0
-
nameVariables
private void nameVariables(Block body, AstMethodBodyBuilder.VariableInfo<?> vi, Set<String> reservedNames)
-