Java 类org.eclipse.jdt.core.dom.ExpressionStatement 实例源码
项目:fb-contrib-eclipse-quick-fixes
文件:UnnecessaryStoreResolution.java
private void findUnnecessaryStore(ReturnStatement node) {
Block block = TraversalUtil.findClosestAncestor(node, Block.class);
@SuppressWarnings("unchecked")
List<Statement> blockStatements = block.statements();
for (int i = 1; i < blockStatements.size(); i++) {
Statement statement = blockStatements.get(i);
if (statement == this.originalReturn) {
for (int j = i - 1; j >= 0; j--) {
Statement storeStatement = blockStatements.get(j);
if (storeStatement instanceof VariableDeclarationStatement) {
splitStatementAndInitializer((VariableDeclarationStatement) storeStatement);
return;
} else if (storeStatement instanceof ExpressionStatement) {
if (splitStatementAndInitializer((ExpressionStatement) storeStatement)) {
// we found our extra storage statement
return;
}
}
}
}
}
}
项目:o3smeasures-tool
文件:WeightMethodsPerClassVisitor.java
/**
* Method that check statement type.
* @author Mariana Azevedo
* @since 13/07/2014
* @param itStatement
*/
private void getStatementType(Object itStatement) {
if (itStatement instanceof CatchClause){
this.visitor.visit((CatchClause)itStatement);
}else if (itStatement instanceof ForStatement){
this.visitor.visit((ForStatement)itStatement);
}else if (itStatement instanceof IfStatement){
this.visitor.visit((IfStatement)itStatement);
}else if (itStatement instanceof WhileStatement){
this.visitor.visit((WhileStatement)itStatement);
}else if (itStatement instanceof TryStatement){
this.visitor.visit((TryStatement)itStatement);
}else if (itStatement instanceof ConditionalExpression){
this.visitor.visit((ConditionalExpression)itStatement);
}else if (itStatement instanceof SwitchCase){
this.visitor.visit((SwitchCase)itStatement);
}else if (itStatement instanceof DoStatement){
this.visitor.visit((DoStatement)itStatement);
}else if (itStatement instanceof ExpressionStatement){
this.visitor.visit((ExpressionStatement)itStatement);
}
}
项目:eclipse.jdt.ls
文件:UnusedCodeFix.java
private void splitUpDeclarations(ASTRewrite rewrite, TextEditGroup group, VariableDeclarationFragment frag, VariableDeclarationStatement originalStatement, List<Expression> sideEffects) {
if (sideEffects.size() > 0) {
ListRewrite statementRewrite= rewrite.getListRewrite(originalStatement.getParent(), (ChildListPropertyDescriptor) originalStatement.getLocationInParent());
Statement previousStatement= originalStatement;
for (int i= 0; i < sideEffects.size(); i++) {
Expression sideEffect= sideEffects.get(i);
Expression movedInit= (Expression) rewrite.createMoveTarget(sideEffect);
ExpressionStatement wrapped= rewrite.getAST().newExpressionStatement(movedInit);
statementRewrite.insertAfter(wrapped, previousStatement, group);
previousStatement= wrapped;
}
VariableDeclarationStatement newDeclaration= null;
List<VariableDeclarationFragment> fragments= originalStatement.fragments();
int fragIndex= fragments.indexOf(frag);
ListIterator<VariableDeclarationFragment> fragmentIterator= fragments.listIterator(fragIndex+1);
while (fragmentIterator.hasNext()) {
VariableDeclarationFragment currentFragment= fragmentIterator.next();
VariableDeclarationFragment movedFragment= (VariableDeclarationFragment) rewrite.createMoveTarget(currentFragment);
if (newDeclaration == null) {
newDeclaration= rewrite.getAST().newVariableDeclarationStatement(movedFragment);
Type copiedType= (Type) rewrite.createCopyTarget(originalStatement.getType());
newDeclaration.setType(copiedType);
} else {
newDeclaration.fragments().add(movedFragment);
}
}
if (newDeclaration != null){
statementRewrite.insertAfter(newDeclaration, previousStatement, group);
if (originalStatement.fragments().size() == newDeclaration.fragments().size() + 1){
rewrite.remove(originalStatement, group);
}
}
}
}
项目:eclipse.jdt.ls
文件:UnusedCodeFix.java
private void removeVariableWithInitializer(ASTRewrite rewrite, ASTNode initializerNode, ASTNode statementNode, TextEditGroup group) {
boolean performRemove= fForceRemove;
if (!performRemove) {
ArrayList<Expression> sideEffectNodes= new ArrayList<>();
initializerNode.accept(new SideEffectFinder(sideEffectNodes));
performRemove= sideEffectNodes.isEmpty();
}
if (performRemove) {
removeStatement(rewrite, statementNode, group);
fRemovedAssignmentsCount++;
} else {
ASTNode initNode = rewrite.createMoveTarget(initializerNode);
ExpressionStatement statement = rewrite.getAST().newExpressionStatement((Expression) initNode);
rewrite.replace(statementNode, statement, null);
fAlteredAssignmentsCount++;
}
}
项目:che
文件:UnusedCodeFix.java
private void removeVariableWithInitializer(
ASTRewrite rewrite, ASTNode initializerNode, ASTNode statementNode, TextEditGroup group) {
boolean performRemove = fForceRemove;
if (!performRemove) {
ArrayList<Expression> sideEffectNodes = new ArrayList<Expression>();
initializerNode.accept(new SideEffectFinder(sideEffectNodes));
performRemove = sideEffectNodes.isEmpty();
}
if (performRemove) {
removeStatement(rewrite, statementNode, group);
fRemovedAssignmentsCount++;
} else {
ASTNode initNode = rewrite.createMoveTarget(initializerNode);
ExpressionStatement statement =
rewrite.getAST().newExpressionStatement((Expression) initNode);
rewrite.replace(statementNode, statement, null);
fAlteredAssignmentsCount++;
}
}
项目:che
文件:RefactoringAvailabilityTester.java
private static ASTNode getInlineableMethodNode(ASTNode node, IJavaElement unit) {
if (node == null) return null;
switch (node.getNodeType()) {
case ASTNode.SIMPLE_NAME:
StructuralPropertyDescriptor locationInParent = node.getLocationInParent();
if (locationInParent == MethodDeclaration.NAME_PROPERTY) {
return node.getParent();
} else if (locationInParent == MethodInvocation.NAME_PROPERTY
|| locationInParent == SuperMethodInvocation.NAME_PROPERTY) {
return unit instanceof ICompilationUnit
? node.getParent()
: null; // don't start on invocations in binary
}
return null;
case ASTNode.EXPRESSION_STATEMENT:
node = ((ExpressionStatement) node).getExpression();
}
switch (node.getNodeType()) {
case ASTNode.METHOD_DECLARATION:
return node;
case ASTNode.METHOD_INVOCATION:
case ASTNode.SUPER_METHOD_INVOCATION:
case ASTNode.CONSTRUCTOR_INVOCATION:
return unit instanceof ICompilationUnit
? node
: null; // don't start on invocations in binary
}
return null;
}
项目:che
文件:ExtractTempRefactoring.java
private static boolean canReplace(IASTFragment fragment) {
ASTNode node = fragment.getAssociatedNode();
ASTNode parent = node.getParent();
if (parent instanceof VariableDeclarationFragment) {
VariableDeclarationFragment vdf = (VariableDeclarationFragment) parent;
if (node.equals(vdf.getName())) return false;
}
if (isMethodParameter(node)) return false;
if (isThrowableInCatchBlock(node)) return false;
if (parent instanceof ExpressionStatement) return false;
if (isLeftValue(node)) return false;
if (isReferringToLocalVariableFromFor((Expression) node)) return false;
if (isUsedInForInitializerOrUpdater((Expression) node)) return false;
if (parent instanceof SwitchCase) return false;
return true;
}
项目:che
文件:ExtractTempRefactoring.java
private void replaceSelectedExpressionWithTempDeclaration() throws CoreException {
ASTRewrite rewrite = fCURewrite.getASTRewrite();
Expression selectedExpression =
getSelectedExpression().getAssociatedExpression(); // whole expression selected
Expression initializer = (Expression) rewrite.createMoveTarget(selectedExpression);
ASTNode replacement =
createTempDeclaration(initializer); // creates a VariableDeclarationStatement
ExpressionStatement parent = (ExpressionStatement) selectedExpression.getParent();
if (ASTNodes.isControlStatementBody(parent.getLocationInParent())) {
Block block = rewrite.getAST().newBlock();
block.statements().add(replacement);
replacement = block;
}
rewrite.replace(
parent,
replacement,
fCURewrite.createGroupDescription(
RefactoringCoreMessages.ExtractTempRefactoring_declare_local_variable));
}
项目:che
文件:ReplaceInvocationsRefactoring.java
private static ASTNode checkNode(ASTNode node) {
if (node == null) return null;
if (node.getNodeType() == ASTNode.SIMPLE_NAME) {
node = node.getParent();
} else if (node.getNodeType() == ASTNode.EXPRESSION_STATEMENT) {
node = ((ExpressionStatement) node).getExpression();
}
switch (node.getNodeType()) {
case ASTNode.METHOD_DECLARATION:
case ASTNode.METHOD_INVOCATION:
// not yet...
// case ASTNode.SUPER_METHOD_INVOCATION:
// case ASTNode.CONSTRUCTOR_INVOCATION:
return node;
}
return null;
}
项目:che
文件:ExtractConstantRefactoring.java
private static boolean canReplace(IASTFragment fragment) {
ASTNode node = fragment.getAssociatedNode();
ASTNode parent = node.getParent();
if (parent instanceof VariableDeclarationFragment) {
VariableDeclarationFragment vdf = (VariableDeclarationFragment) parent;
if (node.equals(vdf.getName())) return false;
}
if (parent instanceof ExpressionStatement) return false;
if (parent instanceof SwitchCase) {
if (node instanceof Name) {
Name name = (Name) node;
ITypeBinding typeBinding = name.resolveTypeBinding();
if (typeBinding != null) {
return !typeBinding.isEnum();
}
}
}
return true;
}
项目:che
文件:AccessAnalyzer.java
@Override
public boolean visit(PostfixExpression node) {
Expression operand = node.getOperand();
if (!considerBinding(resolveBinding(operand), operand)) return true;
ASTNode parent = node.getParent();
if (!(parent instanceof ExpressionStatement)) {
fStatus.addError(
RefactoringCoreMessages
.SelfEncapsulateField_AccessAnalyzer_cannot_convert_postfix_expression,
JavaStatusContext.create(fCUnit, SourceRangeFactory.create(node)));
return false;
}
fRewriter.replace(
node,
createInvocation(node.getAST(), node.getOperand(), node.getOperator().toString()),
createGroupDescription(POSTFIX_ACCESS));
return false;
}
项目:che
文件:AssignToVariableAssistProposal.java
public AssignToVariableAssistProposal(
ICompilationUnit cu,
int variableKind,
ExpressionStatement node,
ITypeBinding typeBinding,
int relevance) {
super("", cu, null, relevance, null); // $NON-NLS-1$
fVariableKind = variableKind;
fNodeToAssign = node;
if (typeBinding.isWildcardType()) {
typeBinding = ASTResolving.normalizeWildcardType(typeBinding, true, node.getAST());
}
fTypeBinding = typeBinding;
if (variableKind == LOCAL) {
setDisplayName(CorrectionMessages.AssignToVariableAssistProposal_assigntolocal_description);
setImage(JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_LOCAL));
} else {
setDisplayName(CorrectionMessages.AssignToVariableAssistProposal_assigntofield_description);
setImage(JavaPluginImages.get(JavaPluginImages.IMG_FIELD_PRIVATE));
}
createImportRewrite((CompilationUnit) node.getRoot());
}
项目:che
文件:AssignToVariableAssistProposal.java
private ASTRewrite doAddLocal() {
Expression expression = ((ExpressionStatement) fNodeToAssign).getExpression();
AST ast = fNodeToAssign.getAST();
ASTRewrite rewrite = ASTRewrite.create(ast);
createImportRewrite((CompilationUnit) fNodeToAssign.getRoot());
String[] varNames = suggestLocalVariableNames(fTypeBinding, expression);
for (int i = 0; i < varNames.length; i++) {
addLinkedPositionProposal(KEY_NAME, varNames[i], null);
}
VariableDeclarationFragment newDeclFrag = ast.newVariableDeclarationFragment();
newDeclFrag.setName(ast.newSimpleName(varNames[0]));
newDeclFrag.setInitializer((Expression) rewrite.createCopyTarget(expression));
Type type = evaluateType(ast);
if (ASTNodes.isControlStatementBody(fNodeToAssign.getLocationInParent())) {
Block block = ast.newBlock();
block.statements().add(rewrite.createMoveTarget(fNodeToAssign));
rewrite.replace(fNodeToAssign, block, null);
}
if (needsSemicolon(expression)) {
VariableDeclarationStatement varStatement = ast.newVariableDeclarationStatement(newDeclFrag);
varStatement.setType(type);
rewrite.replace(expression, varStatement, null);
} else {
// trick for bug 43248: use an VariableDeclarationExpression and keep the ExpressionStatement
VariableDeclarationExpression varExpression =
ast.newVariableDeclarationExpression(newDeclFrag);
varExpression.setType(type);
rewrite.replace(expression, varExpression, null);
}
addLinkedPosition(rewrite.track(newDeclFrag.getName()), true, KEY_NAME);
addLinkedPosition(rewrite.track(type), false, KEY_TYPE);
setEndPosition(rewrite.track(fNodeToAssign)); // set cursor after expression statement
return rewrite;
}
项目:evosuite
文件:TestExtractingVisitor.java
private VariableReference retrieveVariableReference(
ClassInstanceCreation instanceCreation, Class<?> varType) {
if ((instanceCreation.getParent() instanceof MethodInvocation)
|| (instanceCreation.getParent() instanceof ClassInstanceCreation)) {
VariableReference result = new ValidVariableReference(
testCase.getReference(),
retrieveTypeClass(instanceCreation.getType()));
nestedCallResults.push(result);
return result;
}
if ((instanceCreation.getParent() instanceof ExpressionStatement)
&& (instanceCreation.getParent().getParent() instanceof Block)) {
if (varType == null) {
varType = retrieveTypeClass(instanceCreation);
}
VariableReference varRef = new ValidVariableReference(
testCase.getReference(), varType);
return varRef;
}
return retrieveVariableReference(instanceCreation.getParent(), varType);
}
项目:Eclipse-Postfix-Code-Completion
文件:RefactoringAvailabilityTester.java
private static ASTNode getInlineableMethodNode(ASTNode node, IJavaElement unit) {
if (node == null)
return null;
switch (node.getNodeType()) {
case ASTNode.SIMPLE_NAME:
StructuralPropertyDescriptor locationInParent= node.getLocationInParent();
if (locationInParent == MethodDeclaration.NAME_PROPERTY) {
return node.getParent();
} else if (locationInParent == MethodInvocation.NAME_PROPERTY
|| locationInParent == SuperMethodInvocation.NAME_PROPERTY) {
return unit instanceof ICompilationUnit ? node.getParent() : null; // don't start on invocations in binary
}
return null;
case ASTNode.EXPRESSION_STATEMENT:
node= ((ExpressionStatement)node).getExpression();
}
switch (node.getNodeType()) {
case ASTNode.METHOD_DECLARATION:
return node;
case ASTNode.METHOD_INVOCATION:
case ASTNode.SUPER_METHOD_INVOCATION:
case ASTNode.CONSTRUCTOR_INVOCATION:
return unit instanceof ICompilationUnit ? node : null; // don't start on invocations in binary
}
return null;
}
项目:Eclipse-Postfix-Code-Completion
文件:ExtractTempRefactoring.java
private static boolean canReplace(IASTFragment fragment) {
ASTNode node= fragment.getAssociatedNode();
ASTNode parent= node.getParent();
if (parent instanceof VariableDeclarationFragment) {
VariableDeclarationFragment vdf= (VariableDeclarationFragment) parent;
if (node.equals(vdf.getName()))
return false;
}
if (isMethodParameter(node))
return false;
if (isThrowableInCatchBlock(node))
return false;
if (parent instanceof ExpressionStatement)
return false;
if (isLeftValue(node))
return false;
if (isReferringToLocalVariableFromFor((Expression) node))
return false;
if (isUsedInForInitializerOrUpdater((Expression) node))
return false;
if (parent instanceof SwitchCase)
return false;
return true;
}
项目:Eclipse-Postfix-Code-Completion
文件:ExtractTempRefactoring.java
private void replaceSelectedExpressionWithTempDeclaration() throws CoreException {
ASTRewrite rewrite= fCURewrite.getASTRewrite();
Expression selectedExpression= getSelectedExpression().getAssociatedExpression(); // whole expression selected
Expression initializer= (Expression) rewrite.createMoveTarget(selectedExpression);
ASTNode replacement= createTempDeclaration(initializer); // creates a VariableDeclarationStatement
ExpressionStatement parent= (ExpressionStatement) selectedExpression.getParent();
if (ASTNodes.isControlStatementBody(parent.getLocationInParent())) {
Block block= rewrite.getAST().newBlock();
block.statements().add(replacement);
replacement= block;
}
rewrite.replace(parent, replacement, fCURewrite.createGroupDescription(RefactoringCoreMessages.ExtractTempRefactoring_declare_local_variable));
}
项目:Eclipse-Postfix-Code-Completion
文件:ReplaceInvocationsRefactoring.java
private static ASTNode checkNode(ASTNode node) {
if (node == null)
return null;
if (node.getNodeType() == ASTNode.SIMPLE_NAME) {
node= node.getParent();
} else if (node.getNodeType() == ASTNode.EXPRESSION_STATEMENT) {
node= ((ExpressionStatement)node).getExpression();
}
switch(node.getNodeType()) {
case ASTNode.METHOD_DECLARATION:
case ASTNode.METHOD_INVOCATION:
// not yet...
// case ASTNode.SUPER_METHOD_INVOCATION:
// case ASTNode.CONSTRUCTOR_INVOCATION:
return node;
}
return null;
}
项目:Eclipse-Postfix-Code-Completion
文件:IntroduceIndirectionRefactoring.java
private static ASTNode checkNode(ASTNode node) {
if (node == null)
return null;
if (node.getNodeType() == ASTNode.SIMPLE_NAME) {
node= node.getParent();
} else if (node.getNodeType() == ASTNode.EXPRESSION_STATEMENT) {
node= ((ExpressionStatement) node).getExpression();
}
switch (node.getNodeType()) {
case ASTNode.METHOD_INVOCATION:
case ASTNode.METHOD_DECLARATION:
case ASTNode.SUPER_METHOD_INVOCATION:
return node;
}
return null;
}
项目:Eclipse-Postfix-Code-Completion
文件:ExtractConstantRefactoring.java
private static boolean canReplace(IASTFragment fragment) {
ASTNode node= fragment.getAssociatedNode();
ASTNode parent= node.getParent();
if (parent instanceof VariableDeclarationFragment) {
VariableDeclarationFragment vdf= (VariableDeclarationFragment) parent;
if (node.equals(vdf.getName()))
return false;
}
if (parent instanceof ExpressionStatement)
return false;
if (parent instanceof SwitchCase) {
if (node instanceof Name) {
Name name= (Name) node;
ITypeBinding typeBinding= name.resolveTypeBinding();
if (typeBinding != null) {
return !typeBinding.isEnum();
}
}
}
return true;
}
项目:Eclipse-Postfix-Code-Completion
文件:AccessAnalyzer.java
@Override
public boolean visit(PostfixExpression node) {
Expression operand= node.getOperand();
if (!considerBinding(resolveBinding(operand), operand))
return true;
ASTNode parent= node.getParent();
if (!(parent instanceof ExpressionStatement)) {
fStatus.addError(RefactoringCoreMessages.SelfEncapsulateField_AccessAnalyzer_cannot_convert_postfix_expression,
JavaStatusContext.create(fCUnit, SourceRangeFactory.create(node)));
return false;
}
fRewriter.replace(node,
createInvocation(node.getAST(), node.getOperand(), node.getOperator().toString()),
createGroupDescription(POSTFIX_ACCESS));
return false;
}
项目:Eclipse-Postfix-Code-Completion
文件:VariableDeclarationFix.java
private MethodDeclaration getWritingConstructor(SimpleName name) {
Assignment assignement= (Assignment)ASTNodes.getParent(name, Assignment.class);
if (assignement == null)
return null;
ASTNode expression= assignement.getParent();
if (!(expression instanceof ExpressionStatement))
return null;
ASTNode block= expression.getParent();
if (!(block instanceof Block))
return null;
ASTNode methodDeclaration= block.getParent();
if (!(methodDeclaration instanceof MethodDeclaration))
return null;
return (MethodDeclaration)methodDeclaration;
}
项目:Eclipse-Postfix-Code-Completion
文件:UnusedCodeFix.java
private void splitUpDeclarations(ASTRewrite rewrite, TextEditGroup group, VariableDeclarationFragment frag, VariableDeclarationStatement originalStatement, List<Expression> sideEffects) {
if (sideEffects.size() > 0) {
ListRewrite statementRewrite= rewrite.getListRewrite(originalStatement.getParent(), (ChildListPropertyDescriptor) originalStatement.getLocationInParent());
Statement previousStatement= originalStatement;
for (int i= 0; i < sideEffects.size(); i++) {
Expression sideEffect= sideEffects.get(i);
Expression movedInit= (Expression) rewrite.createMoveTarget(sideEffect);
ExpressionStatement wrapped= rewrite.getAST().newExpressionStatement(movedInit);
statementRewrite.insertAfter(wrapped, previousStatement, group);
previousStatement= wrapped;
}
VariableDeclarationStatement newDeclaration= null;
List<VariableDeclarationFragment> fragments= originalStatement.fragments();
int fragIndex= fragments.indexOf(frag);
ListIterator<VariableDeclarationFragment> fragmentIterator= fragments.listIterator(fragIndex+1);
while (fragmentIterator.hasNext()) {
VariableDeclarationFragment currentFragment= fragmentIterator.next();
VariableDeclarationFragment movedFragment= (VariableDeclarationFragment) rewrite.createMoveTarget(currentFragment);
if (newDeclaration == null) {
newDeclaration= rewrite.getAST().newVariableDeclarationStatement(movedFragment);
Type copiedType= (Type) rewrite.createCopyTarget(originalStatement.getType());
newDeclaration.setType(copiedType);
} else {
newDeclaration.fragments().add(movedFragment);
}
}
if (newDeclaration != null){
statementRewrite.insertAfter(newDeclaration, previousStatement, group);
if (originalStatement.fragments().size() == newDeclaration.fragments().size() + 1){
rewrite.remove(originalStatement, group);
}
}
}
}
项目:Eclipse-Postfix-Code-Completion
文件:UnusedCodeFix.java
private void removeVariableWithInitializer(ASTRewrite rewrite, ASTNode initializerNode, ASTNode statementNode, TextEditGroup group) {
boolean performRemove= fForceRemove;
if (!performRemove) {
ArrayList<Expression> sideEffectNodes= new ArrayList<Expression>();
initializerNode.accept(new SideEffectFinder(sideEffectNodes));
performRemove= sideEffectNodes.isEmpty();
}
if (performRemove) {
removeStatement(rewrite, statementNode, group);
fRemovedAssignmentsCount++;
} else {
ASTNode initNode = rewrite.createMoveTarget(initializerNode);
ExpressionStatement statement = rewrite.getAST().newExpressionStatement((Expression) initNode);
rewrite.replace(statementNode, statement, null);
fAlteredAssignmentsCount++;
}
}
项目:Eclipse-Postfix-Code-Completion
文件:AssignToVariableAssistProposal.java
public AssignToVariableAssistProposal(ICompilationUnit cu, int variableKind, ExpressionStatement node, ITypeBinding typeBinding, int relevance) {
super("", cu, null, relevance, null); //$NON-NLS-1$
fVariableKind= variableKind;
fNodeToAssign= node;
if (typeBinding.isWildcardType()) {
typeBinding= ASTResolving.normalizeWildcardType(typeBinding, true, node.getAST());
}
fTypeBinding= typeBinding;
if (variableKind == LOCAL) {
setDisplayName(CorrectionMessages.AssignToVariableAssistProposal_assigntolocal_description);
setImage(JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_LOCAL));
} else {
setDisplayName(CorrectionMessages.AssignToVariableAssistProposal_assigntofield_description);
setImage(JavaPluginImages.get(JavaPluginImages.IMG_FIELD_PRIVATE));
}
createImportRewrite((CompilationUnit) node.getRoot());
}
项目:codemodify
文件:LambdaConverterFix.java
private ASTNode prepareLambdaBody(Block body, List<Statement> statements) {
ASTNode lambdaBody = body;
if (statements.size() == 1) {
// use short form with just an expression body if possible
Statement statement = statements.get(0);
if (statement instanceof ExpressionStatement) {
lambdaBody = ((ExpressionStatement) statement).getExpression();
} else if (statement instanceof ReturnStatement) {
Expression returnExpression = ((ReturnStatement) statement).getExpression();
if (returnExpression != null) {
lambdaBody = returnExpression;
}
}
}
return lambdaBody;
}
项目:EASyProducer
文件:JavaMethod.java
/**
* Returns all statements within a method.
*
* @return Set of all statements
*/
private ArraySet<AbstractJavaStatement> statements() {
final List<AbstractJavaStatement> list = new ArrayList<AbstractJavaStatement>();
methodDeclaration.accept(new ASTVisitor() {
@Override
public boolean visit(ExpressionStatement node) {
if (node.getExpression() instanceof MethodInvocation) {
MethodInvocation methodInvocation = (MethodInvocation) node.getExpression();
String methodName = methodInvocation.getName().toString();
if (null != methodInvocation.getExpression()) {
ITypeBinding typeBinding = methodInvocation.getExpression().resolveTypeBinding();
if (null != typeBinding) {
JavaCall javaCall = new JavaCall(node, methodName, typeBinding, JavaMethod.this);
list.add(javaCall);
}
}
}
return false;
}
});
return new ArraySet<AbstractJavaStatement>(list.toArray(new JavaCall[list.size()]), JavaCall.class);
}
项目:EASyProducer
文件:JavaMethod.java
/**
* Returns all statements within a method.
*
* @return Set of all statements
*/
private ArraySet<AbstractJavaStatement> assignments() {
final List<AbstractJavaStatement> list = new ArrayList<AbstractJavaStatement>();
methodDeclaration.accept(new ASTVisitor() {
@Override
public boolean visit(Assignment node) {
Expression lhs = node.getLeftHandSide();
ITypeBinding typeBinding = lhs.resolveTypeBinding();
Expression rhs = node.getRightHandSide();
if (rhs instanceof ClassInstanceCreation && node.getParent() instanceof ExpressionStatement) {
ExpressionStatement parent = (ExpressionStatement) node.getParent();
JavaAssignment assignment = new JavaAssignment(JavaMethod.this, parent, lhs.toString(), typeBinding,
(ClassInstanceCreation) rhs);
list.add(assignment);
}
// TODO SE: (Static) method invocations, e.g. call of another
// factory are not supported.
return false;
}
});
return new ArraySet<AbstractJavaStatement>(list.toArray(new JavaAssignment[list.size()]), JavaAssignment.class);
}
项目:ChangeScribe
文件:MethodAnalyzer.java
public boolean visit(final ExpressionStatement node) {
if (node.getExpression() instanceof MethodInvocation) {
final MethodInvocation method = (MethodInvocation)node.getExpression();
Expression expression;
for (expression = method.getExpression(); expression instanceof MethodInvocation; expression = ((MethodInvocation)expression).getExpression()) {}
final IVariableBinding field = this.getLocalField(expression);
if (field != null) {
MethodAnalyzer.this.setFields.add(field);
}
int index = this.getVariableIndex(method.getExpression());
if (index != -1) {
MethodAnalyzer.this.variables.get(index).setModified(true);
} else {
index = this.getParameterIndex(method.getExpression());
if (index != -1) {
MethodAnalyzer.this.parameters.get(index).setModified(true);
}
}
if (this.isLocalMethod(method)) {
MethodAnalyzer.this.invokedLocalMethods.add(method.resolveMethodBinding());
}
}
return super.visit(node);
}
项目:Eclipse-Postfix-Code-Completion-Juno38
文件:RefactoringAvailabilityTester.java
private static ASTNode getInlineableMethodNode(ASTNode node, IJavaElement unit) {
if (node == null)
return null;
switch (node.getNodeType()) {
case ASTNode.SIMPLE_NAME:
StructuralPropertyDescriptor locationInParent= node.getLocationInParent();
if (locationInParent == MethodDeclaration.NAME_PROPERTY) {
return node.getParent();
} else if (locationInParent == MethodInvocation.NAME_PROPERTY
|| locationInParent == SuperMethodInvocation.NAME_PROPERTY) {
return unit instanceof ICompilationUnit ? node.getParent() : null; // don't start on invocations in binary
}
return null;
case ASTNode.EXPRESSION_STATEMENT:
node= ((ExpressionStatement)node).getExpression();
}
switch (node.getNodeType()) {
case ASTNode.METHOD_DECLARATION:
return node;
case ASTNode.METHOD_INVOCATION:
case ASTNode.SUPER_METHOD_INVOCATION:
case ASTNode.CONSTRUCTOR_INVOCATION:
return unit instanceof ICompilationUnit ? node : null; // don't start on invocations in binary
}
return null;
}
项目:Eclipse-Postfix-Code-Completion-Juno38
文件:ExtractTempRefactoring.java
private static boolean canReplace(IASTFragment fragment) {
ASTNode node= fragment.getAssociatedNode();
ASTNode parent= node.getParent();
if (parent instanceof VariableDeclarationFragment) {
VariableDeclarationFragment vdf= (VariableDeclarationFragment) parent;
if (node.equals(vdf.getName()))
return false;
}
if (isMethodParameter(node))
return false;
if (isThrowableInCatchBlock(node))
return false;
if (parent instanceof ExpressionStatement)
return false;
if (isLeftValue(node))
return false;
if (isReferringToLocalVariableFromFor((Expression) node))
return false;
if (isUsedInForInitializerOrUpdater((Expression) node))
return false;
if (parent instanceof SwitchCase)
return false;
return true;
}
项目:Eclipse-Postfix-Code-Completion-Juno38
文件:ExtractTempRefactoring.java
private void replaceSelectedExpressionWithTempDeclaration() throws CoreException {
ASTRewrite rewrite= fCURewrite.getASTRewrite();
Expression selectedExpression= getSelectedExpression().getAssociatedExpression(); // whole expression selected
Expression initializer= (Expression) rewrite.createMoveTarget(selectedExpression);
ASTNode replacement= createTempDeclaration(initializer); // creates a VariableDeclarationStatement
ExpressionStatement parent= (ExpressionStatement) selectedExpression.getParent();
if (ASTNodes.isControlStatementBody(parent.getLocationInParent())) {
Block block= rewrite.getAST().newBlock();
block.statements().add(replacement);
replacement= block;
}
rewrite.replace(parent, replacement, fCURewrite.createGroupDescription(RefactoringCoreMessages.ExtractTempRefactoring_declare_local_variable));
}
项目:Eclipse-Postfix-Code-Completion-Juno38
文件:ReplaceInvocationsRefactoring.java
private static ASTNode checkNode(ASTNode node) {
if (node == null)
return null;
if (node.getNodeType() == ASTNode.SIMPLE_NAME) {
node= node.getParent();
} else if (node.getNodeType() == ASTNode.EXPRESSION_STATEMENT) {
node= ((ExpressionStatement)node).getExpression();
}
switch(node.getNodeType()) {
case ASTNode.METHOD_DECLARATION:
case ASTNode.METHOD_INVOCATION:
// not yet...
// case ASTNode.SUPER_METHOD_INVOCATION:
// case ASTNode.CONSTRUCTOR_INVOCATION:
return node;
}
return null;
}
项目:Eclipse-Postfix-Code-Completion-Juno38
文件:IntroduceIndirectionRefactoring.java
private static ASTNode checkNode(ASTNode node) {
if (node == null)
return null;
if (node.getNodeType() == ASTNode.SIMPLE_NAME) {
node= node.getParent();
} else if (node.getNodeType() == ASTNode.EXPRESSION_STATEMENT) {
node= ((ExpressionStatement) node).getExpression();
}
switch (node.getNodeType()) {
case ASTNode.METHOD_INVOCATION:
case ASTNode.METHOD_DECLARATION:
case ASTNode.SUPER_METHOD_INVOCATION:
return node;
}
return null;
}
项目:Eclipse-Postfix-Code-Completion-Juno38
文件:ExtractConstantRefactoring.java
private static boolean canReplace(IASTFragment fragment) {
ASTNode node= fragment.getAssociatedNode();
ASTNode parent= node.getParent();
if (parent instanceof VariableDeclarationFragment) {
VariableDeclarationFragment vdf= (VariableDeclarationFragment) parent;
if (node.equals(vdf.getName()))
return false;
}
if (parent instanceof ExpressionStatement)
return false;
if (parent instanceof SwitchCase) {
if (node instanceof Name) {
Name name= (Name) node;
ITypeBinding typeBinding= name.resolveTypeBinding();
if (typeBinding != null) {
return !typeBinding.isEnum();
}
}
}
return true;
}
项目:Eclipse-Postfix-Code-Completion-Juno38
文件:AccessAnalyzer.java
@Override
public boolean visit(PostfixExpression node) {
Expression operand= node.getOperand();
if (!considerBinding(resolveBinding(operand), operand))
return true;
ASTNode parent= node.getParent();
if (!(parent instanceof ExpressionStatement)) {
fStatus.addError(RefactoringCoreMessages.SelfEncapsulateField_AccessAnalyzer_cannot_convert_postfix_expression,
JavaStatusContext.create(fCUnit, SourceRangeFactory.create(node)));
return false;
}
fRewriter.replace(node,
createInvocation(node.getAST(), node.getOperand(), node.getOperator().toString()),
createGroupDescription(POSTFIX_ACCESS));
return false;
}
项目:Eclipse-Postfix-Code-Completion-Juno38
文件:VariableDeclarationFix.java
private MethodDeclaration getWritingConstructor(SimpleName name) {
Assignment assignement= (Assignment)ASTNodes.getParent(name, Assignment.class);
if (assignement == null)
return null;
ASTNode expression= assignement.getParent();
if (!(expression instanceof ExpressionStatement))
return null;
ASTNode block= expression.getParent();
if (!(block instanceof Block))
return null;
ASTNode methodDeclaration= block.getParent();
if (!(methodDeclaration instanceof MethodDeclaration))
return null;
return (MethodDeclaration)methodDeclaration;
}
项目:Eclipse-Postfix-Code-Completion-Juno38
文件:UnusedCodeFix.java
private void splitUpDeclarations(ASTRewrite rewrite, TextEditGroup group, VariableDeclarationFragment frag, ListRewrite statementRewrite, VariableDeclarationStatement originalStatement) {
Expression initializer = frag.getInitializer();
//keep constructors and method invocations
if (initializer instanceof MethodInvocation || initializer instanceof ClassInstanceCreation){
Expression movedInitializer= (Expression) rewrite.createMoveTarget(initializer);
ExpressionStatement newInitializer= rewrite.getAST().newExpressionStatement( movedInitializer);
statementRewrite.insertAfter(newInitializer, originalStatement, group);
VariableDeclarationStatement newDeclaration= null;
List<VariableDeclarationFragment> fragments= originalStatement.fragments();
int fragIndex= fragments.indexOf(frag);
ListIterator<VariableDeclarationFragment> fragmentIterator= fragments.listIterator(fragIndex+1);
while (fragmentIterator.hasNext()) {
VariableDeclarationFragment currentFragment= fragmentIterator.next();
VariableDeclarationFragment movedFragment= (VariableDeclarationFragment) rewrite.createMoveTarget(currentFragment);
if (newDeclaration == null) {
newDeclaration= rewrite.getAST().newVariableDeclarationStatement(movedFragment);
Type copiedType= (Type) rewrite.createCopyTarget(originalStatement.getType());
newDeclaration.setType(copiedType);
} else
newDeclaration.fragments().add(movedFragment);
}
if (newDeclaration != null){
statementRewrite.insertAfter(newDeclaration, newInitializer, group);
}
if (originalStatement.fragments().size() == newDeclaration.fragments().size() + 1){
rewrite.remove(originalStatement, group);
}
}
}
项目:Eclipse-Postfix-Code-Completion-Juno38
文件:UnusedCodeFix.java
private void removeVariableWithInitializer(ASTRewrite rewrite, ASTNode initializerNode, ASTNode statementNode, TextEditGroup group) {
boolean performRemove= fForceRemove;
if (!performRemove) {
ArrayList<Expression> sideEffectNodes= new ArrayList<Expression>();
initializerNode.accept(new SideEffectFinder(sideEffectNodes));
performRemove= sideEffectNodes.isEmpty();
}
if (performRemove) {
removeStatement(rewrite, statementNode, group);
fRemovedAssignmentsCount++;
} else {
ASTNode initNode = rewrite.createMoveTarget(initializerNode);
ExpressionStatement statement = rewrite.getAST().newExpressionStatement((Expression) initNode);
rewrite.replace(statementNode, statement, null);
fAlteredAssignmentsCount++;
}
}
项目:Eclipse-Postfix-Code-Completion-Juno38
文件:AssignToVariableAssistProposal.java
public AssignToVariableAssistProposal(ICompilationUnit cu, int variableKind, ExpressionStatement node, ITypeBinding typeBinding, int relevance) {
super("", cu, null, relevance, null); //$NON-NLS-1$
fVariableKind= variableKind;
fNodeToAssign= node;
if (typeBinding.isWildcardType()) {
typeBinding= ASTResolving.normalizeWildcardType(typeBinding, true, node.getAST());
}
fTypeBinding= typeBinding;
if (variableKind == LOCAL) {
setDisplayName(CorrectionMessages.AssignToVariableAssistProposal_assigntolocal_description);
setImage(JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_LOCAL));
} else {
setDisplayName(CorrectionMessages.AssignToVariableAssistProposal_assigntofield_description);
setImage(JavaPluginImages.get(JavaPluginImages.IMG_FIELD_PRIVATE));
}
createImportRewrite((CompilationUnit) node.getRoot());
}