Java Code Examples for org.eclipse.jdt.core.dom.rewrite.ListRewrite#createMoveTarget()
The following examples show how to use
org.eclipse.jdt.core.dom.rewrite.ListRewrite#createMoveTarget() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: LocalCorrectionsSubProcessor.java From eclipse.jdt.ls with Eclipse Public License 2.0 | 4 votes |
private static void addRemoveIncludingConditionProposal(IInvocationContext context, ASTNode toRemove, ASTNode replacement, Collection<ChangeCorrectionProposal> proposals) { String label = CorrectionMessages.LocalCorrectionsSubProcessor_removeunreachablecode_including_condition_description; AST ast = toRemove.getAST(); ASTRewrite rewrite = ASTRewrite.create(ast); ASTRewriteCorrectionProposal proposal = new ASTRewriteCorrectionProposal(label, CodeActionKind.QuickFix, context.getCompilationUnit(), rewrite, IProposalRelevance.REMOVE_UNREACHABLE_CODE_INCLUDING_CONDITION); if (replacement == null || replacement instanceof EmptyStatement || replacement instanceof Block && ((Block) replacement).statements().size() == 0) { if (ASTNodes.isControlStatementBody(toRemove.getLocationInParent())) { rewrite.replace(toRemove, toRemove.getAST().newBlock(), null); } else { rewrite.remove(toRemove, null); } } else if (toRemove instanceof Expression && replacement instanceof Expression) { Expression moved = (Expression) rewrite.createMoveTarget(replacement); Expression toRemoveExpression = (Expression) toRemove; Expression replacementExpression = (Expression) replacement; ITypeBinding explicitCast = ASTNodes.getExplicitCast(replacementExpression, toRemoveExpression); if (explicitCast != null) { CastExpression cast = ast.newCastExpression(); if (NecessaryParenthesesChecker.needsParentheses(replacementExpression, cast, CastExpression.EXPRESSION_PROPERTY)) { ParenthesizedExpression parenthesized = ast.newParenthesizedExpression(); parenthesized.setExpression(moved); moved = parenthesized; } cast.setExpression(moved); ImportRewrite imports = proposal.createImportRewrite(context.getASTRoot()); ImportRewriteContext importRewriteContext = new ContextSensitiveImportRewriteContext(toRemove, imports); cast.setType(imports.addImport(explicitCast, ast, importRewriteContext, TypeLocation.CAST)); moved = cast; } rewrite.replace(toRemove, moved, null); } else { ASTNode parent = toRemove.getParent(); ASTNode moveTarget; if ((parent instanceof Block || parent instanceof SwitchStatement) && replacement instanceof Block) { ListRewrite listRewrite = rewrite.getListRewrite(replacement, Block.STATEMENTS_PROPERTY); List<Statement> list = ((Block) replacement).statements(); int lastIndex = list.size() - 1; moveTarget = listRewrite.createMoveTarget(list.get(0), list.get(lastIndex)); } else { moveTarget = rewrite.createMoveTarget(replacement); } rewrite.replace(toRemove, moveTarget, null); } proposals.add(proposal); }
Example 2
Source File: LocalCorrectionsSubProcessor.java From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 | 4 votes |
private static void addRemoveIncludingConditionProposal(IInvocationContext context, ASTNode toRemove, ASTNode replacement, Collection<ICommandAccess> proposals) { Image image= JavaPlugin.getDefault().getWorkbench().getSharedImages().getImage(ISharedImages.IMG_TOOL_DELETE); String label= CorrectionMessages.LocalCorrectionsSubProcessor_removeunreachablecode_including_condition_description; AST ast= toRemove.getAST(); ASTRewrite rewrite= ASTRewrite.create(ast); ASTRewriteCorrectionProposal proposal= new ASTRewriteCorrectionProposal(label, context.getCompilationUnit(), rewrite, IProposalRelevance.REMOVE_UNREACHABLE_CODE_INCLUDING_CONDITION, image); if (replacement == null || replacement instanceof EmptyStatement || replacement instanceof Block && ((Block)replacement).statements().size() == 0) { if (ASTNodes.isControlStatementBody(toRemove.getLocationInParent())) { rewrite.replace(toRemove, toRemove.getAST().newBlock(), null); } else { rewrite.remove(toRemove, null); } } else if (toRemove instanceof Expression && replacement instanceof Expression) { Expression moved= (Expression) rewrite.createMoveTarget(replacement); Expression toRemoveExpression= (Expression) toRemove; Expression replacementExpression= (Expression) replacement; ITypeBinding explicitCast= ASTNodes.getExplicitCast(replacementExpression, toRemoveExpression); if (explicitCast != null) { CastExpression cast= ast.newCastExpression(); if (NecessaryParenthesesChecker.needsParentheses(replacementExpression, cast, CastExpression.EXPRESSION_PROPERTY)) { ParenthesizedExpression parenthesized= ast.newParenthesizedExpression(); parenthesized.setExpression(moved); moved= parenthesized; } cast.setExpression(moved); ImportRewrite imports= proposal.createImportRewrite(context.getASTRoot()); ImportRewriteContext importRewriteContext= new ContextSensitiveImportRewriteContext(toRemove, imports); cast.setType(imports.addImport(explicitCast, ast, importRewriteContext)); moved= cast; } rewrite.replace(toRemove, moved, null); } else { ASTNode parent= toRemove.getParent(); ASTNode moveTarget; if ((parent instanceof Block || parent instanceof SwitchStatement) && replacement instanceof Block) { ListRewrite listRewrite= rewrite.getListRewrite(replacement, Block.STATEMENTS_PROPERTY); List<Statement> list= ((Block)replacement).statements(); int lastIndex= list.size() - 1; moveTarget= listRewrite.createMoveTarget(list.get(0), list.get(lastIndex)); } else { moveTarget= rewrite.createMoveTarget(replacement); } rewrite.replace(toRemove, moveTarget, null); } proposals.add(proposal); }