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_stringBuilderArgumentPatternprivate static charARGUMENT_MARKERprivate static charCONSTANT_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 booleananyIsString(java.util.List<Expression> expressions)private booleananyIsString(java.util.List<Expression> expressions, int start, int end)private voidconvertStringBuilderToConcatenation(ObjectCreationExpression node, Expression firstArgument)private voidhandleIndyConcat(InvocationExpression parent, AstNodeCollection<Expression> arguments)private voidhandleIndyConcatWithConstants(InvocationExpression parent, DynamicCallSite callSite, AstNodeCollection<Expression> arguments)private booleanisStringBuilder(TypeReference typeReference)private static intnextMarker(java.lang.String pattern, int start)java.lang.VoidvisitInlinedBytecode(InlinedBytecodeExpression node, java.lang.Void data)java.lang.VoidvisitObjectCreationExpression(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:
visitInlinedBytecodein interfaceIAstVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitInlinedBytecodein 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:
visitObjectCreationExpressionin interfaceIAstVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitObjectCreationExpressionin 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)
-
-