Class IntroduceStringConcatenationTransform
- java.lang.Object
-
- com.strobel.decompiler.languages.java.ast.DepthFirstAstVisitor<java.lang.Void,TResult>
-
- com.strobel.decompiler.languages.java.ast.ContextTrackingVisitor<java.lang.Void>
-
- com.strobel.decompiler.languages.java.ast.transforms.IntroduceStringConcatenationTransform
-
- All Implemented Interfaces:
IAstVisitor<java.lang.Void,java.lang.Void>
,IAstTransform
public class IntroduceStringConcatenationTransform extends ContextTrackingVisitor<java.lang.Void>
-
-
Field Summary
Fields Modifier and Type Field Description private INode
_stringBuilderArgumentPattern
private static char
ARGUMENT_MARKER
private static char
CONSTANT_MARKER
-
Fields inherited from class com.strobel.decompiler.languages.java.ast.ContextTrackingVisitor
context
-
-
Constructor Summary
Constructors Constructor Description IntroduceStringConcatenationTransform(DecompilerContext context)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private boolean
anyIsString(java.util.List<Expression> expressions)
private boolean
anyIsString(java.util.List<Expression> expressions, int start, int end)
private void
convertStringBuilderToConcatenation(ObjectCreationExpression node, Expression firstArgument)
private void
handleIndyConcat(InvocationExpression parent, AstNodeCollection<Expression> arguments)
private void
handleIndyConcatWithConstants(InvocationExpression parent, DynamicCallSite callSite, AstNodeCollection<Expression> arguments)
private boolean
isStringBuilder(TypeReference typeReference)
private static int
nextMarker(java.lang.String pattern, int start)
java.lang.Void
visitInlinedBytecode(InlinedBytecodeExpression node, java.lang.Void data)
java.lang.Void
visitObjectCreationExpression(ObjectCreationExpression node, java.lang.Void data)
-
Methods inherited from class com.strobel.decompiler.languages.java.ast.ContextTrackingVisitor
inConstructor, inMethod, inStaticInitializer, makeType, makeType, resolver, run, visitConstructorDeclaration, visitMethodDeclaration, visitMethodDeclarationOverride, visitTypeDeclaration, visitTypeDeclarationOverride
-
Methods inherited from class com.strobel.decompiler.languages.java.ast.DepthFirstAstVisitor
shouldContinue, visitAnnotation, visitAnonymousObjectCreationExpression, visitArrayCreationExpression, visitArrayInitializerExpression, visitArraySpecifier, visitAssertStatement, visitAssignmentExpression, visitBinaryOperatorExpression, visitBlockStatement, visitBreakStatement, visitBytecodeConstant, visitCaseLabel, visitCastExpression, visitCatchClause, visitChildren, visitClassOfExpression, visitComment, visitCompilationUnit, visitComposedType, visitConditionalExpression, visitContinueStatement, visitDoWhileStatement, visitEmptyStatement, visitEnumValueDeclaration, visitExpressionStatement, visitFieldDeclaration, visitForEachStatement, visitForStatement, visitGotoStatement, visitIdentifier, visitIdentifierExpression, visitIfElseStatement, visitImportDeclaration, visitIndexerExpression, visitInitializerBlock, visitInstanceOfExpression, visitIntersectionType, visitInvocationExpression, visitJavaTokenNode, visitLabeledStatement, visitLabelStatement, visitLambdaExpression, visitLocalTypeDeclarationStatement, visitMemberReferenceExpression, visitMethodGroupExpression, visitModuleDeclaration, visitNewLine, visitNullReferenceExpression, visitPackageDeclaration, visitParameterDeclaration, visitParenthesizedExpression, visitPatternPlaceholder, visitPrimitiveExpression, visitReturnStatement, visitSimpleType, visitSuperReferenceExpression, visitSwitchExpression, visitSwitchExpressionArm, visitSwitchSection, visitSwitchStatement, visitSynchronizedStatement, visitText, visitThisReferenceExpression, visitThrowStatement, visitTryCatchStatement, visitTypeParameterDeclaration, visitTypeReference, visitUnaryOperatorExpression, visitUnionType, visitVariableDeclaration, visitVariableInitializer, visitWhileStatement, visitWildcardType
-
-
-
-
Field Detail
-
ARGUMENT_MARKER
private static final char ARGUMENT_MARKER
- See Also:
- Constant Field Values
-
CONSTANT_MARKER
private static final char CONSTANT_MARKER
- See Also:
- Constant Field Values
-
_stringBuilderArgumentPattern
private final INode _stringBuilderArgumentPattern
-
-
Constructor Detail
-
IntroduceStringConcatenationTransform
public IntroduceStringConcatenationTransform(DecompilerContext context)
-
-
Method Detail
-
visitInlinedBytecode
public java.lang.Void visitInlinedBytecode(InlinedBytecodeExpression node, java.lang.Void data)
- Specified by:
visitInlinedBytecode
in interfaceIAstVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitInlinedBytecode
in classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
handleIndyConcat
private void handleIndyConcat(InvocationExpression parent, AstNodeCollection<Expression> arguments)
-
handleIndyConcatWithConstants
private void handleIndyConcatWithConstants(InvocationExpression parent, DynamicCallSite callSite, AstNodeCollection<Expression> arguments)
-
nextMarker
private static int nextMarker(java.lang.String pattern, int start)
-
visitObjectCreationExpression
public java.lang.Void visitObjectCreationExpression(ObjectCreationExpression node, java.lang.Void data)
- Specified by:
visitObjectCreationExpression
in interfaceIAstVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitObjectCreationExpression
in classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
isStringBuilder
private boolean isStringBuilder(TypeReference typeReference)
-
convertStringBuilderToConcatenation
private void convertStringBuilderToConcatenation(ObjectCreationExpression node, Expression firstArgument)
-
anyIsString
private boolean anyIsString(java.util.List<Expression> expressions)
-
anyIsString
private boolean anyIsString(java.util.List<Expression> expressions, int start, int end)
-
-