private static boolean isUsedInForInitializerOrUpdater(Expression expression) { ASTNode parent= expression.getParent(); if (parent instanceof ForStatement) { ForStatement forStmt= (ForStatement) parent; return forStmt.initializers().contains(expression) || forStmt.updaters().contains(expression); } return false; }
private static boolean isUsedInForInitializerOrUpdater(Expression expression) { ASTNode parent= expression.getParent(); if (parent instanceof ForStatement) { ForStatement forStmt= (ForStatement) parent; return forStmt.initializers().contains(expression) || forStmt.updaters().contains(expression); } return false; }
private static boolean isNegated(Expression expression) { if (!(expression.getParent() instanceof ParenthesizedExpression)) return false; ParenthesizedExpression parenthesis= (ParenthesizedExpression) expression.getParent(); if (!(parenthesis.getParent() instanceof PrefixExpression)) return false; PrefixExpression prefix= (PrefixExpression) parenthesis.getParent(); if (!(prefix.getOperator() == PrefixExpression.Operator.NOT)) return false; return true; }
private static boolean isUsedInForInitializerOrUpdater(Expression expression) { ASTNode parent = expression.getParent(); if (parent instanceof ForStatement) { ForStatement forStmt = (ForStatement) parent; return forStmt.initializers().contains(expression) || forStmt.updaters().contains(expression); } return false; }
private static boolean isUsedInForInitializerOrUpdater(Expression expression) { ASTNode parent= expression.getParent(); if (parent instanceof ForStatement) { ForStatement forStmt= (ForStatement) parent; return forStmt.initializers().contains(expression) || forStmt.updaters().contains(expression); } return false; }
private static boolean isNegated(Expression expression) { if (!(expression.getParent() instanceof ParenthesizedExpression)) return false; ParenthesizedExpression parenthesis= (ParenthesizedExpression)expression.getParent(); if (!(parenthesis.getParent() instanceof PrefixExpression)) return false; PrefixExpression prefix= (PrefixExpression)parenthesis.getParent(); if (!(prefix.getOperator() == PrefixExpression.Operator.NOT)) return false; return true; } private static String[] suggestLocalVariableNames(ICompilationUnit cu, ITypeBinding binding) {
private static boolean isNegated(Expression expression) { if (!(expression.getParent() instanceof ParenthesizedExpression)) return false; ParenthesizedExpression parenthesis= (ParenthesizedExpression) expression.getParent(); if (!(parenthesis.getParent() instanceof PrefixExpression)) return false; PrefixExpression prefix= (PrefixExpression) parenthesis.getParent(); if (!(prefix.getOperator() == PrefixExpression.Operator.NOT)) return false; return true; }
/** * Can the parentheses be removed from the parenthesized expression ? * * <p> * <b>Note:</b> The parenthesized expression must not be an unparented node. * </p> * * @param expression the parenthesized expression * @return <code>true</code> if parentheses can be removed, <code>false</code> otherwise. */ public static boolean canRemoveParentheses(Expression expression) { return canRemoveParentheses(expression, expression.getParent(), expression.getLocationInParent()); }
/** * Can the parentheses be removed from the parenthesized expression ? * * <p> * <b>Note:</b> The parenthesized expression must not be an unparented node. * </p> * * @param expression the parenthesized expression * @return <code>true</code> if parentheses can be removed, <code>false</code> otherwise. */ public static boolean canRemoveParentheses(Expression expression) { return canRemoveParentheses(expression, expression.getParent(), expression.getLocationInParent()); }
/** * Returns whether an expression at the given location needs explicit boxing. * * @param expression the expression * @return <code>true</code> iff an expression at the given location needs explicit boxing * @since 3.6 */ private static boolean needsExplicitBoxing(Expression expression) { StructuralPropertyDescriptor locationInParent= expression.getLocationInParent(); if (locationInParent == ParenthesizedExpression.EXPRESSION_PROPERTY) return needsExplicitBoxing((ParenthesizedExpression) expression.getParent()); if (locationInParent == ClassInstanceCreation.EXPRESSION_PROPERTY || locationInParent == FieldAccess.EXPRESSION_PROPERTY || locationInParent == MethodInvocation.EXPRESSION_PROPERTY) return true; return false; }
private static Expression getAssignedValue(ProposalParameter context) { ASTNode parent= context.accessNode.getParent(); ASTRewrite astRewrite= context.astRewrite; IJavaProject javaProject= context.compilationUnit.getJavaProject(); IMethodBinding getter= findGetter(context); Expression getterExpression= null; if (getter != null) { getterExpression= astRewrite.getAST().newSimpleName("placeholder"); //$NON-NLS-1$ } ITypeBinding type= context.variableBinding.getType(); boolean is50OrHigher= JavaModelUtil.is50OrHigher(javaProject); Expression result= GetterSetterUtil.getAssignedValue(parent, astRewrite, getterExpression, type, is50OrHigher); if (result != null && getterExpression != null && getterExpression.getParent() != null) { getterExpression.getParent().setStructuralProperty(getterExpression.getLocationInParent(), createMethodInvocation(context, getter, null)); } return result; }
private void replaceSelectedExpression(CompilationUnitRewrite cuRewrite) { if (! fSourceCU.equals(cuRewrite.getCu())) return; // TODO: do for all methodDeclarations and replace matching fragments? // cannot use fSelectedExpression here, since it could be from another AST (if method was replaced by overridden): Expression expression= (Expression) NodeFinder.perform(cuRewrite.getRoot(), fSelectedExpression.getStartPosition(), fSelectedExpression.getLength()); ASTNode newExpression= cuRewrite.getRoot().getAST().newSimpleName(fParameter.getNewName()); String description= RefactoringCoreMessages.IntroduceParameterRefactoring_replace; cuRewrite.getASTRewrite().replace(expression.getParent() instanceof ParenthesizedExpression ? expression.getParent() : expression, newExpression, cuRewrite.createGroupDescription(description)); }
private void replaceSelectedExpression(CompilationUnitRewrite cuRewrite) { if (! fSourceCU.equals(cuRewrite.getCu())) return; // TODO: do for all methodDeclarations and replace matching fragments? // cannot use fSelectedExpression here, since it could be from another AST (if method was replaced by overridden): Expression expression= (Expression) NodeFinder.perform(cuRewrite.getRoot(), fSelectedExpression.getStartPosition(), fSelectedExpression.getLength()); ASTNode newExpression= cuRewrite.getRoot().getAST().newSimpleName(fParameter.getNewName()); String description= RefactoringCoreMessages.IntroduceParameterRefactoring_replace; cuRewrite.getASTRewrite().replace(expression.getParent() instanceof ParenthesizedExpression ? expression.getParent() : expression, newExpression, cuRewrite.createGroupDescription(description)); }
private boolean needsSemicolon(Expression expression) { if ((expression.getParent().getFlags() & ASTNode.RECOVERED) != 0) { try { TokenScanner scanner= new TokenScanner(getCompilationUnit()); return scanner.readNext(expression.getStartPosition() + expression.getLength(), true) != ITerminalSymbols.TokenNameSEMICOLON; } catch (CoreException e) { // ignore } } return false; }
private boolean needsSemicolon(Expression expression) { if ((expression.getParent().getFlags() & ASTNode.RECOVERED) != 0) { try { TokenScanner scanner= new TokenScanner(getCompilationUnit()); return scanner.readNext(expression.getStartPosition() + expression.getLength(), true) != ITerminalSymbols.TokenNameSEMICOLON; } catch (CoreException e) { // ignore } } return false; }
private IExpressionFragment getSelectedExpression() throws JavaModelException { if(fSelectedExpression != null) return fSelectedExpression; IASTFragment selectedFragment= ASTFragmentFactory.createFragmentForSourceRange(new SourceRange(fSelectionStart, fSelectionLength), fCuRewrite.getRoot(), fCu); if (selectedFragment instanceof IExpressionFragment && ! Checks.isInsideJavadoc(selectedFragment.getAssociatedNode())) { fSelectedExpression= (IExpressionFragment) selectedFragment; } if (fSelectedExpression != null && Checks.isEnumCase(fSelectedExpression.getAssociatedExpression().getParent())) { fSelectedExpression= null; } return fSelectedExpression; }
private IExpressionFragment getSelectedExpression() throws JavaModelException { if(fSelectedExpression != null) return fSelectedExpression; IASTFragment selectedFragment= ASTFragmentFactory.createFragmentForSourceRange(new SourceRange(fSelectionStart, fSelectionLength), fCuRewrite.getRoot(), fCu); if (selectedFragment instanceof IExpressionFragment && ! Checks.isInsideJavadoc(selectedFragment.getAssociatedNode())) { fSelectedExpression= (IExpressionFragment) selectedFragment; } if (fSelectedExpression != null && Checks.isEnumCase(fSelectedExpression.getAssociatedExpression().getParent())) { fSelectedExpression= null; } return fSelectedExpression; }
private IExpressionFragment getSelectedExpression() throws JavaModelException { if (fSelectedExpression != null) { return fSelectedExpression; } IASTFragment selectedFragment = ASTFragmentFactory.createFragmentForSourceRange(new SourceRange(fSelectionStart, fSelectionLength), fCuRewrite.getRoot(), fCu); if (selectedFragment instanceof IExpressionFragment && !Checks.isInsideJavadoc(selectedFragment.getAssociatedNode())) { fSelectedExpression = (IExpressionFragment) selectedFragment; } if (fSelectedExpression != null && Checks.isEnumCase(fSelectedExpression.getAssociatedExpression().getParent())) { fSelectedExpression = null; } return fSelectedExpression; }
private IExpressionFragment getSelectedExpression() throws JavaModelException { if(fSelectedExpression != null) return fSelectedExpression; IASTFragment selectedFragment= ASTFragmentFactory.createFragmentForSourceRange(new SourceRange(fSelectionStart, fSelectionLength), fCuRewrite.getRoot(), fCu); if (selectedFragment instanceof IExpressionFragment && ! Checks.isInsideJavadoc(selectedFragment.getAssociatedNode())) { fSelectedExpression= (IExpressionFragment) selectedFragment; } if (fSelectedExpression != null && Checks.isEnumCase(fSelectedExpression.getAssociatedExpression().getParent())) { fSelectedExpression= null; } return fSelectedExpression; }
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)); }