下面列出了怎么用org.eclipse.jdt.core.dom.EmptyStatement的API类实例代码及写法,或者点击链接到github查看源代码。
/**
* {@inheritDoc}
*/
@Override
protected ASTVisitor handleGetCorrectingASTVisitor(final IRegion lineInfo,
final int markerStartPosition) {
return new ASTVisitor() {
@Override
public boolean visit(EmptyStatement node) {
if (containsPosition(lineInfo, node.getStartPosition())) {
// early exit if the statement is mandatory, e.g. only
// statement in a for-statement without block
StructuralPropertyDescriptor p = node.getLocationInParent();
if (p.isChildProperty() && ((ChildPropertyDescriptor) p).isMandatory()) {
return false;
}
node.delete();
}
return false;
}
};
}
@Override
public ASTVisitor getCorrectingASTVisitor(IRegion lineInfo, int markerStartOffset) {
return new ASTVisitor() {
@Override
public boolean visit(EmptyStatement node) {
if (containsPosition(lineInfo, node.getStartPosition())) {
// early exit if the statement is mandatory, e.g. only
// statement in a for-statement without block
final StructuralPropertyDescriptor p = node.getLocationInParent();
if (p.isChildProperty() && ((ChildPropertyDescriptor) p).isMandatory()) {
return false;
}
node.delete();
}
return false;
}
};
}
public boolean visit(EmptyStatement stmnt){
/*
* EmptyStatement: ;
*/
appendSemicolon();
return false;
}
public boolean visit(EmptyStatement node) {
return true;
}
private EmptyStmt visit(EmptyStatement node) {
int startLine = _cunit.getLineNumber(node.getStartPosition());
int endLine = _cunit.getLineNumber(node.getStartPosition() + node.getLength());
EmptyStmt emptyStmt = new EmptyStmt(startLine, endLine, node);
return emptyStmt;
}
@Override
public boolean visit(EmptyStatement node) {
// Empty statements aren't of any interest.
return false;
}
@Override
public void endVisit(EmptyStatement node) {
// Leaf node.
}
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);
}
@Override
public boolean visit(final EmptyStatement node) {
this.appendToBuffer(";");
return false;
}
@Override
public boolean visit(EmptyStatement node) {
// Empty statements aren't of any interest.
return false;
}
@Override
public void endVisit(EmptyStatement node) {
// Leaf node.
}
@Override
public boolean visit(EmptyStatement node) {
if (node.subtreeMatch(fMatcher, fNodeToMatch))
return matches(node);
return super.visit(node);
}
@Override
public boolean visit(EmptyStatement node) {
add(fCreator.create(node));
return true;
}
@Override
public void endVisit(EmptyStatement node) {
endVisitNode(node);
}
@Override
public boolean visit(EmptyStatement node) {
return visitNode(node);
}
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);
}
public boolean visit(EmptyStatement node) {
statementList.add(node);
return false;
}
public boolean visit(EmptyStatement node) {
statementsList.add(node);
return false;
}
/**
* @param node the AST node
* @return array of type constraints, may be empty
* @see org.eclipse.jdt.core.dom.ASTVisitor#visit(org.eclipse.jdt.core.dom.EmptyStatement)
*/
public ITypeConstraint[] create(EmptyStatement node) {
return EMPTY_ARRAY;
}