Java 类com.intellij.psi.PsiAssignmentExpression 实例源码

项目:consulo-java    文件:SimplifyToAssignmentFix.java   
@Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor)
{
    final PsiElement psiElement = descriptor.getPsiElement();
    if(psiElement == null)
    {
        return;
    }

    final PsiAssignmentExpression assignmentExpression = PsiTreeUtil.getParentOfType(psiElement, PsiAssignmentExpression.class);
    if(assignmentExpression == null)
    {
        return;
    }

    final PsiElementFactory factory = JavaPsiFacade.getElementFactory(project);
    final String lExpressionText = assignmentExpression.getLExpression().getText();
    final PsiExpression rExpression = assignmentExpression.getRExpression();
    final String rExpressionText = rExpression != null ? rExpression.getText() : "";
    assignmentExpression.replace(factory.createExpressionFromText(lExpressionText + " = " + rExpressionText, psiElement));
}
项目:consulo-java    文件:ReplaceMultiplyWithShiftIntention.java   
private static void replaceMultiplyOrDivideAssignWithShiftAssign(
  PsiAssignmentExpression expression)
  throws IncorrectOperationException {
  final PsiExpression lhs = expression.getLExpression();
  final PsiExpression rhs = expression.getRExpression();
  final IElementType tokenType = expression.getOperationTokenType();
  final String assignString;
  if (tokenType.equals(JavaTokenType.ASTERISKEQ)) {
    assignString = "<<=";
  }
  else {
    assignString = ">>=";
  }
  final String expString =
    lhs.getText() + assignString + ShiftUtils.getLogBase2(rhs);
  replaceExpression(expString, expression);
}
项目:consulo-java    文件:ReplaceShiftWithMultiplyIntention.java   
private static void replaceShiftAssignWithMultiplyOrDivideAssign(
  PsiElement element)
  throws IncorrectOperationException {
  final PsiAssignmentExpression exp =
    (PsiAssignmentExpression)element;
  final PsiExpression lhs = exp.getLExpression();
  final PsiExpression rhs = exp.getRExpression();
  final IElementType tokenType = exp.getOperationTokenType();
  final String assignString;
  if (tokenType.equals(JavaTokenType.LTLTEQ)) {
    assignString = "*=";
  }
  else {
    assignString = "/=";
  }
  final String expString =
    lhs.getText() + assignString + ShiftUtils.getExpBase2(rhs);
  replaceExpression(expString, exp);
}
项目:consulo-java    文件:ReplaceAssignmentWithOperatorAssignmentInspection.java   
@Override
public void doFix(@NotNull Project project, ProblemDescriptor descriptor)
  throws IncorrectOperationException {
  final PsiElement element = descriptor.getPsiElement();
  if (!(element instanceof PsiAssignmentExpression)) {
    return;
  }
  final PsiAssignmentExpression expression = (PsiAssignmentExpression)element;
  final PsiExpression lhs = expression.getLExpression();
  PsiExpression rhs = ParenthesesUtils.stripParentheses(expression.getRExpression());
  if (rhs instanceof PsiTypeCastExpression) {
    final PsiTypeCastExpression typeCastExpression = (PsiTypeCastExpression)rhs;
    final PsiType castType = typeCastExpression.getType();
    if (castType == null || !castType.equals(lhs.getType())) {
      return;
    }
    rhs = ParenthesesUtils.stripParentheses(typeCastExpression.getOperand());
  }
  if (!(rhs instanceof PsiPolyadicExpression)) {
    return;
  }
  final PsiPolyadicExpression polyadicExpression = (PsiPolyadicExpression)rhs;
  final String newExpression = calculateReplacementExpression(lhs, polyadicExpression);
  replaceExpression(expression, newExpression);
}
项目:consulo-java    文件:TrivialIfInspection.java   
private static void replaceSimplifiableAssignment(
  PsiIfStatement statement)
  throws IncorrectOperationException {
  final PsiExpression condition = statement.getCondition();
  if (condition == null) {
    return;
  }
  final String conditionText = condition.getText();
  final PsiStatement thenBranch = statement.getThenBranch();
  final PsiExpressionStatement assignmentStatement =
    (PsiExpressionStatement)
      ControlFlowUtils.stripBraces(thenBranch);
  final PsiAssignmentExpression assignmentExpression =
    (PsiAssignmentExpression)assignmentStatement.getExpression();
  final PsiJavaToken operator =
    assignmentExpression.getOperationSign();
  final String operand = operator.getText();
  final PsiExpression lhs = assignmentExpression.getLExpression();
  final String lhsText = lhs.getText();
  replaceStatement(statement,
                   lhsText + operand + conditionText + ';');
}
项目:consulo-java    文件:TrivialIfInspection.java   
private static void replaceSimplifiableAssignmentNegated(
  PsiIfStatement statement)
  throws IncorrectOperationException {
  final PsiExpression condition = statement.getCondition();
  if (condition == null) {
    return;
  }
  final String conditionText =
    BoolUtils.getNegatedExpressionText(condition);
  final PsiStatement thenBranch = statement.getThenBranch();
  final PsiExpressionStatement assignmentStatement =
    (PsiExpressionStatement)
      ControlFlowUtils.stripBraces(thenBranch);
  final PsiAssignmentExpression assignmentExpression =
    (PsiAssignmentExpression)
      assignmentStatement.getExpression();
  final PsiJavaToken operator =
    assignmentExpression.getOperationSign();
  final String operand = operator.getText();
  final PsiExpression lhs = assignmentExpression.getLExpression();
  final String lhsText = lhs.getText();
  replaceStatement(statement,
                   lhsText + operand + conditionText + ';');
}
项目:Android_Lint_SRP_Practice_Example    文件:SharingGroupClassificationDetector.java   
/**
 * メソッドが変更するフィールド変数(状態)を解析
 * @param allFields クラスが所持するすべてのフィールド
 * @return メソッドが変更する全てのフィールド
 */
private Map<String, PsiField> parse(@NonNull Map<String, PsiField> allFields) {

    Map<String, PsiField> writeFields = new HashMap<>();

    // メソッド内の全代入式を抽出
    List<PsiAssignmentExpression> assignments = ElementUtil.extractAssignments(mMethod);
    for (PsiAssignmentExpression assignment : assignments) {

        // 左辺から変数名を取得
        List<PsiIdentifier> ids =
                ElementUtil.extractIdentifiers(assignment.getLExpression());
        PsiIdentifier id = ids.get(ids.size()-1);

        if (allFields.containsKey(id.getText())) {

            // フィールドと同名のクラス変数やインスタンス変数か否かをチェック
            boolean isInstance = ElementUtil.isThisExpression(id) || ElementUtil.isRefExpression(id);

            // フィールドと同名のローカル変数やパラメータか否かをチェック
            PsiElement element =
                    ElementUtil.ScopeBacktrack
                            .seek(assignment, allFields.get(id.getText()).getNameIdentifier());
            if (element != null && !isInstance) continue;

            writeFields.put(id.getText(), allFields.get(id.getText()));
        }
    }
    return writeFields;
}
项目:Android_Lint_SRP_Practice_Example    文件:ElementUtil.java   
private static void extractAssignments(@NonNull PsiElement element, List<PsiAssignmentExpression> assignments) {
    for (PsiElement child : element.getChildren()) {
        if (child instanceof PsiAssignmentExpression) {
            assignments.add((PsiAssignmentExpression) child);
            continue;
        }
        extractAssignments(child, assignments);
    }
}
项目:Android_Lint_SRP_Practice_Example    文件:ElementUtil.java   
public static void debugAssignments(String tag, PsiElement root, List<PsiAssignmentExpression> assignments) {
    System.out.println(tag + " :root=>>>>\n" + root.getText() + "\n<<<");
    for (PsiAssignmentExpression assignment : assignments) {
        System.out.println("assignment -> " + assignment.getText());
    }
    System.out.println();
}
项目:intellij-ce-playground    文件:OperatorAssignmentPredicate.java   
public boolean satisfiedBy(PsiElement element) {
  if (!(element instanceof PsiAssignmentExpression)) {
    return false;
  }
  final PsiAssignmentExpression assignmentExpression =
    (PsiAssignmentExpression)element;
  final IElementType tokenType =
    assignmentExpression.getOperationTokenType();
  return OPERATOR_ASSIGNMENT_TOKENS.contains(tokenType);
}
项目:tools-idea    文件:NestedAssignmentInspection.java   
@Override
public void visitAssignmentExpression(
  @NotNull PsiAssignmentExpression expression) {
  super.visitAssignmentExpression(expression);
  final PsiElement parent = expression.getParent();
  if (parent == null) {
    return;
  }
  final PsiElement grandparent = parent.getParent();
  if (parent instanceof PsiExpressionStatement ||
      grandparent instanceof PsiExpressionListStatement) {
    return;
  }
  registerError(expression);
}
项目:tools-idea    文件:OperatorAssignmentPredicate.java   
public boolean satisfiedBy(PsiElement element) {
  if (!(element instanceof PsiAssignmentExpression)) {
    return false;
  }
  final PsiAssignmentExpression assignmentExpression =
    (PsiAssignmentExpression)element;
  final IElementType tokenType =
    assignmentExpression.getOperationTokenType();
  return OPERATOR_ASSIGNMENT_TOKENS.contains(tokenType);
}
项目:CopyConstructorPlugin    文件:IncompleteCopyConstructorInspection.java   
private boolean constructorAssignsAllFields(final PsiMethod constructor, List<PsiField> allFields) {
    final Set<PsiField> unassignedFields = new HashSet<PsiField>(allFields);
    final PsiParameter copyParameter = constructor.getParameterList().getParameters()[0];
    constructor.accept(new JavaRecursiveElementVisitor() {
        @Override
        public void visitAssignmentExpression(PsiAssignmentExpression expression) {
            PsiExpression left = expression.getLExpression();
            PsiExpression right = expression.getRExpression();
            PsiReference assignee = left.getReference();
            if (assignee != null) {
                PsiElement leftReference = assignee.resolve();
                if (leftReference != null && leftReference instanceof PsiField) {
                    PsiField referencedField = (PsiField) leftReference;
                    if (isReferenceToFieldInInstance(left, referencedField, null)) {
                        if (isReferenceToFieldInInstance(right, referencedField, copyParameter)) {
                            unassignedFields.remove(referencedField);
                        } else if (right != null) {
                            // report problem: suspicious assignment copies value from wrong field: "this.x = copy.y"
                            holder.registerProblem(expression,
                                    String.format("Suspicious assignment in copy constructor of '%s' to field %s", right.getText(),
                                            referencedField.getName()), ProblemHighlightType.GENERIC_ERROR_OR_WARNING);
                        }
                    }
                }
            }
        }
    });
    return unassignedFields.isEmpty();
}
项目:consulo-java    文件:AssignInstruction.java   
@Nullable
public PsiExpression getLExpression()
{
    if(myRExpression == null)
    {
        return null;
    }
    if(myRExpression.getParent() instanceof PsiAssignmentExpression)
    {
        return ((PsiAssignmentExpression) myRExpression.getParent()).getLExpression();
    }
    return null;
}
项目:consulo-java    文件:VariableAssignedFromVisitor.java   
@Override
public void visitAssignmentExpression(
  @NotNull PsiAssignmentExpression assignment) {
  if (assignedFrom) {
    return;
  }
  super.visitAssignmentExpression(assignment);
  final PsiExpression arg = assignment.getRExpression();
  if (VariableAccessUtils.mayEvaluateToVariable(arg, variable)) {
    assignedFrom = true;
  }
}
项目:consulo-java    文件:JavaFoldingBuilder.java   
@Override
protected boolean shouldShowExplicitLambdaType(@NotNull PsiAnonymousClass anonymousClass, @NotNull PsiNewExpression expression)
{
    PsiElement parent = expression.getParent();
    if(parent instanceof PsiReferenceExpression || parent instanceof PsiAssignmentExpression)
    {
        return true;
    }

    ExpectedTypeInfo[] types = ExpectedTypesProvider.getExpectedTypes(expression, false);
    return types.length != 1 || !types[0].getType().equals(anonymousClass.getBaseClassType());
}
项目:consulo-java    文件:ReplaceableWithOperatorAssignmentPredicate.java   
public boolean satisfiedBy(PsiElement element) {
  if (!(element instanceof PsiAssignmentExpression)) {
    return false;
  }
  final PsiAssignmentExpression assignment = (PsiAssignmentExpression)element;
  final IElementType tokenType = assignment.getOperationTokenType();
  if (!JavaTokenType.EQ.equals(tokenType)) {
    return false;
  }
  final PsiExpression rhs = assignment.getRExpression();
  final PsiExpression expression = PsiUtil.deparenthesizeExpression(rhs);
  if (!(expression instanceof PsiPolyadicExpression)) {
    return false;
  }
  final PsiPolyadicExpression polyadicExpression = (PsiPolyadicExpression)expression;
  final PsiExpression[] operands = polyadicExpression.getOperands();
  if (operands.length < 2) {
    return false;
  }
  final IElementType rhsTokenType = polyadicExpression.getOperationTokenType();
  if (JavaTokenType.OROR.equals(rhsTokenType) || JavaTokenType.ANDAND.equals(rhsTokenType) ||
      JavaTokenType.EQEQ.equals(rhsTokenType) || JavaTokenType.NE.equals(rhsTokenType)) {
    return false;
  }
  final PsiExpression lhs = assignment.getLExpression();
  if (SideEffectChecker.mayHaveSideEffects(lhs)) {
    return false;
  }
  if (!EquivalenceChecker.expressionsAreEquivalent(lhs, operands[0])) {
    return false;
  }
  return !ErrorUtil.containsError(element);
}
项目:consulo-java    文件:OperatorAssignmentPredicate.java   
public boolean satisfiedBy(PsiElement element) {
  if (!(element instanceof PsiAssignmentExpression)) {
    return false;
  }
  final PsiAssignmentExpression assignmentExpression =
    (PsiAssignmentExpression)element;
  final IElementType tokenType =
    assignmentExpression.getOperationTokenType();
  return OPERATOR_ASSIGNMENT_TOKENS.contains(tokenType);
}
项目:consulo-java    文件:ReplaceOperatorAssignmentWithAssignmentIntention.java   
@Override
protected String getTextForElement(PsiElement element) {
  final PsiAssignmentExpression assignmentExpression = (PsiAssignmentExpression)element;
  final PsiJavaToken sign = assignmentExpression.getOperationSign();
  final String operator = sign.getText();
  return IntentionPowerPackBundle.message("replace.operator.assignment.with.assignment.intention.name", operator);
}
项目:consulo-java    文件:ReplaceOperatorAssignmentWithAssignmentIntention.java   
@Override
protected void processIntention(@NotNull PsiElement element) {
  final PsiAssignmentExpression assignmentExpression = (PsiAssignmentExpression)element;
  final PsiJavaToken sign = assignmentExpression.getOperationSign();
  final PsiExpression lhs = assignmentExpression.getLExpression();
  final PsiExpression rhs = assignmentExpression.getRExpression();
  final String operator = sign.getText();
  final String newOperator = operator.substring(0, operator.length() - 1);
  final String lhsText = lhs.getText();
  final String rhsText = (rhs == null) ? "" : rhs.getText();
  final boolean parentheses;
  if (rhs instanceof PsiPolyadicExpression) {
    final PsiPolyadicExpression binaryExpression = (PsiPolyadicExpression)rhs;
    final int precedence1 = ParenthesesUtils.getPrecedenceForOperator(binaryExpression.getOperationTokenType());
    final IElementType signTokenType = sign.getTokenType();
    final IElementType newOperatorToken = tokenMap.get(signTokenType);
    final int precedence2 = ParenthesesUtils.getPrecedenceForOperator(newOperatorToken);
    parentheses = precedence1 >= precedence2 || !ParenthesesUtils.isCommutativeOperator(newOperatorToken);
  }
  else {
    parentheses = false;
  }
  final String cast = getCastString(lhs, rhs);
  final StringBuilder newExpression = new StringBuilder(lhsText);
  newExpression.append('=').append(cast);
  if (!cast.isEmpty()) {
    newExpression.append('(');
  }
  newExpression.append(lhsText).append(newOperator);
  if (parentheses) {
    newExpression.append('(').append(rhsText).append(')');
  }
  else {
    newExpression.append(rhsText);
  }
  if (!cast.isEmpty()) {
    newExpression.append(')');
  }
  replaceExpression(newExpression.toString(), assignmentExpression);
}
项目:consulo-java    文件:ReplaceMultiplyWithShiftIntention.java   
public void processIntention(PsiElement element)
  throws IncorrectOperationException {
  if (element instanceof PsiBinaryExpression) {
    replaceMultiplyOrDivideWithShift((PsiBinaryExpression)element);
  }
  else {
    replaceMultiplyOrDivideAssignWithShiftAssign(
      (PsiAssignmentExpression)element);
  }
}
项目:consulo-java    文件:NestedAssignmentInspection.java   
@Override
public void visitAssignmentExpression(
  @NotNull PsiAssignmentExpression expression) {
  super.visitAssignmentExpression(expression);
  final PsiElement parent = expression.getParent();
  if (parent == null) {
    return;
  }
  final PsiElement grandparent = parent.getParent();
  if (parent instanceof PsiExpressionStatement ||
      grandparent instanceof PsiExpressionListStatement) {
    return;
  }
  registerError(expression);
}
项目:consulo-java    文件:TrivialIfInspection.java   
private static void replaceSimplifiableImplicitAssignment(
  PsiIfStatement statement) throws IncorrectOperationException {
  final PsiElement prevStatement =
    PsiTreeUtil.skipSiblingsBackward(statement,
                                     PsiWhiteSpace.class);
  if (prevStatement == null) {
    return;
  }
  final PsiExpression condition = statement.getCondition();
  if (condition == null) {
    return;
  }
  final String conditionText = condition.getText();
  final PsiStatement thenBranch = statement.getThenBranch();
  final PsiExpressionStatement assignmentStatement =
    (PsiExpressionStatement)
      ControlFlowUtils.stripBraces(thenBranch);
  final PsiAssignmentExpression assignmentExpression =
    (PsiAssignmentExpression)assignmentStatement.getExpression();
  final PsiJavaToken operator =
    assignmentExpression.getOperationSign();
  final String operand = operator.getText();
  final PsiExpression lhs = assignmentExpression.getLExpression();
  final String lhsText = lhs.getText();
  replaceStatement(statement,
                   lhsText + operand + conditionText + ';');
  deleteElement(prevStatement);
}
项目:consulo-java    文件:TrivialIfInspection.java   
public static boolean isSimplifiableAssignment(PsiIfStatement ifStatement) {
  PsiStatement thenBranch = ifStatement.getThenBranch();
  thenBranch = ControlFlowUtils.stripBraces(thenBranch);
  PsiStatement elseBranch = ifStatement.getElseBranch();
  elseBranch = ControlFlowUtils.stripBraces(elseBranch);
  if (ConditionalUtils.isAssignment(thenBranch, PsiKeyword.TRUE) &&
      ConditionalUtils.isAssignment(elseBranch, PsiKeyword.FALSE)) {
    final PsiExpressionStatement thenExpressionStatement =
      (PsiExpressionStatement)thenBranch;
    final PsiAssignmentExpression thenExpression =
      (PsiAssignmentExpression)
        thenExpressionStatement.getExpression();
    final PsiExpressionStatement elseExpressionStatement =
      (PsiExpressionStatement)elseBranch;
    final PsiAssignmentExpression elseExpression =
      (PsiAssignmentExpression)
        elseExpressionStatement.getExpression();
    final IElementType thenTokenType = thenExpression.getOperationTokenType();
    if (!thenTokenType.equals(elseExpression.getOperationTokenType())) {
      return false;
    }
    final PsiExpression thenLhs = thenExpression.getLExpression();
    final PsiExpression elseLhs = elseExpression.getLExpression();
    return EquivalenceChecker.getCanonicalPsiEquivalence().expressionsAreEquivalent(thenLhs,
                                                       elseLhs);
  }
  else {
    return false;
  }
}
项目:consulo-java    文件:TrivialIfInspection.java   
public static boolean isSimplifiableAssignmentNegated(
  PsiIfStatement ifStatement) {
  PsiStatement thenBranch = ifStatement.getThenBranch();
  thenBranch = ControlFlowUtils.stripBraces(thenBranch);
  PsiStatement elseBranch = ifStatement.getElseBranch();
  elseBranch = ControlFlowUtils.stripBraces(elseBranch);
  if (ConditionalUtils.isAssignment(thenBranch, PsiKeyword.FALSE) &&
      ConditionalUtils.isAssignment(elseBranch, PsiKeyword.TRUE)) {
    final PsiExpressionStatement thenExpressionStatement =
      (PsiExpressionStatement)thenBranch;
    final PsiAssignmentExpression thenExpression =
      (PsiAssignmentExpression)
        thenExpressionStatement.getExpression();
    final PsiExpressionStatement elseExpressionStatement =
      (PsiExpressionStatement)elseBranch;
    final PsiAssignmentExpression elseExpression =
      (PsiAssignmentExpression)
        elseExpressionStatement.getExpression();
    final IElementType thenTokenType = thenExpression.getOperationTokenType();
    if (!thenTokenType.equals(elseExpression.getOperationTokenType())) {
      return false;
    }
    final PsiExpression thenLhs = thenExpression.getLExpression();
    final PsiExpression elseLhs = elseExpression.getLExpression();
    return EquivalenceChecker.getCanonicalPsiEquivalence().expressionsAreEquivalent(thenLhs,
                                                       elseLhs);
  }
  else {
    return false;
  }
}
项目:consulo-java    文件:TrivialIfInspection.java   
public static boolean isSimplifiableImplicitAssignment(
  PsiIfStatement ifStatement) {
  if (ifStatement.getElseBranch() != null) {
    return false;
  }
  PsiStatement thenBranch = ifStatement.getThenBranch();
  thenBranch = ControlFlowUtils.stripBraces(thenBranch);
  final PsiElement nextStatement =
    PsiTreeUtil.skipSiblingsBackward(ifStatement,
                                     PsiWhiteSpace.class);
  if (!(nextStatement instanceof PsiStatement)) {
    return false;
  }
  PsiStatement elseBranch = (PsiStatement)nextStatement;
  elseBranch = ControlFlowUtils.stripBraces(elseBranch);
  if (ConditionalUtils.isAssignment(thenBranch, PsiKeyword.TRUE) &&
      ConditionalUtils.isAssignment(elseBranch, PsiKeyword.FALSE)) {
    final PsiExpressionStatement thenExpressionStatement =
      (PsiExpressionStatement)thenBranch;
    final PsiAssignmentExpression thenExpression =
      (PsiAssignmentExpression)
        thenExpressionStatement.getExpression();
    final PsiExpressionStatement elseExpressionStatement =
      (PsiExpressionStatement)elseBranch;
    final PsiAssignmentExpression elseExpression =
      (PsiAssignmentExpression)
        elseExpressionStatement.getExpression();
    final IElementType thenTokenType = thenExpression.getOperationTokenType();
    if (!thenTokenType.equals(elseExpression.getOperationTokenType())) {
      return false;
    }
    final PsiExpression thenLhs = thenExpression.getLExpression();
    final PsiExpression elseLhs = elseExpression.getLExpression();
    return EquivalenceChecker.getCanonicalPsiEquivalence().expressionsAreEquivalent(thenLhs,
                                                       elseLhs);
  }
  else {
    return false;
  }
}
项目:consulo-java    文件:TrivialIfInspection.java   
public static boolean isSimplifiableImplicitAssignmentNegated(
  PsiIfStatement ifStatement) {
  if (ifStatement.getElseBranch() != null) {
    return false;
  }
  PsiStatement thenBranch = ifStatement.getThenBranch();
  thenBranch = ControlFlowUtils.stripBraces(thenBranch);
  final PsiElement nextStatement =
    PsiTreeUtil.skipSiblingsBackward(ifStatement,
                                     PsiWhiteSpace.class);
  if (!(nextStatement instanceof PsiStatement)) {
    return false;
  }
  PsiStatement elseBranch = (PsiStatement)nextStatement;
  elseBranch = ControlFlowUtils.stripBraces(elseBranch);
  if (ConditionalUtils.isAssignment(thenBranch, PsiKeyword.FALSE) &&
      ConditionalUtils.isAssignment(elseBranch, PsiKeyword.TRUE)) {
    final PsiExpressionStatement thenExpressionStatement =
      (PsiExpressionStatement)thenBranch;
    final PsiAssignmentExpression thenExpression =
      (PsiAssignmentExpression)
        thenExpressionStatement.getExpression();
    final PsiExpressionStatement elseExpressionStatement =
      (PsiExpressionStatement)elseBranch;
    final PsiAssignmentExpression elseExpression =
      (PsiAssignmentExpression)
        elseExpressionStatement.getExpression();
    final IElementType thenTokenType = thenExpression.getOperationTokenType();
    if (!thenTokenType.equals(elseExpression.getOperationTokenType())) {
      return false;
    }
    final PsiExpression thenLhs = thenExpression.getLExpression();
    final PsiExpression elseLhs = elseExpression.getLExpression();
    return EquivalenceChecker.getCanonicalPsiEquivalence().expressionsAreEquivalent(thenLhs,
                                                       elseLhs);
  }
  else {
    return false;
  }
}
项目:Android_Lint_SRP_Practice_Example    文件:MultiFunctionFlagStructureDetector.java   
private static void ifThenBranchAssignment(PsiAssignmentExpression assignment, PsiExpression expr) {
    if (!DEBUG_DETAIL) return;
    System.out.println("condition thenBranch-> assignment=" + (assignment != null ? assignment.getText() : "null")
            + ", source=" + expr.getText());
}
项目:Android_Lint_SRP_Practice_Example    文件:MultiFunctionFlagStructureDetector.java   
private static void ifElseBranchAssignment(PsiAssignmentExpression assignment, PsiExpression expr) {
    if (!DEBUG_DETAIL) return;
    System.out.println("condition elseBranch-> assignment=" + (assignment != null ? assignment.getText() : "null")
            + ", source=" + expr.getText());
}
项目:Android_Lint_SRP_Practice_Example    文件:ElementUtil.java   
/**
 * 代入式
 * @param element ルートノード
 * @return 代入式のリスト (空要素の場合もあります)
 */
public static @NonNull List<PsiAssignmentExpression> extractAssignments(@NonNull PsiElement element) {
    List<PsiAssignmentExpression> assignments = new ArrayList<>();
    extractAssignments(element, assignments);
    return assignments;
}
项目:Android_Lint_SRP_Practice_Example    文件:PsiClassStructureDetector.java   
@Override
public void visitAssignmentExpression(PsiAssignmentExpression expression) {
    mVisitor.report("PsiAssignmentExpression", expression.getText(), expression);
    super.visitExpression(expression);
}
项目:intellij-ce-playground    文件:WellFormednessUtils.java   
public static boolean isWellFormed(@NotNull PsiAssignmentExpression expression) {

    final PsiExpression rhs = expression.getRExpression();
    return rhs != null;
  }
项目:tools-idea    文件:WellFormednessUtils.java   
public static boolean isWellFormed(@NotNull PsiAssignmentExpression expression) {

    final PsiExpression rhs = expression.getRExpression();
    return rhs != null;
  }
项目:consulo-java    文件:RemoveAssignmentFix.java   
@Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor)
{
    final PsiElement element = descriptor.getPsiElement();
    final PsiElement parent;
    if(element instanceof PsiReferenceExpression)
    {
        parent = element.getParent();
    }
    else
    {
        parent = element;
    }
    if(!(parent instanceof PsiAssignmentExpression))
    {
        return;
    }
    final PsiExpression rExpression = ((PsiAssignmentExpression) parent).getRExpression();
    final PsiElement gParent = parent.getParent();
    if((gParent instanceof PsiExpression || gParent instanceof PsiExpressionList) && rExpression != null)
    {
        if(!FileModificationService.getInstance().prepareFileForWrite(gParent.getContainingFile()))
        {
            return;
        }
        if(gParent instanceof PsiParenthesizedExpression)
        {
            gParent.replace(rExpression);
        }
        else
        {
            parent.replace(rExpression);
        }
        return;
    }

    PsiElement resolve = null;
    if(element instanceof PsiReferenceExpression)
    {
        resolve = ((PsiReferenceExpression) element).resolve();
    }
    else
    {
        final PsiExpression lExpr = PsiUtil.deparenthesizeExpression(((PsiAssignmentExpression) parent).getLExpression());
        if(lExpr instanceof PsiReferenceExpression)
        {
            resolve = ((PsiReferenceExpression) lExpr).resolve();
        }
    }
    if(!(resolve instanceof PsiVariable))
    {
        return;
    }
    sideEffectAwareRemove(project, rExpression, parent, (PsiVariable) resolve);
}
项目:consulo-java    文件:ReplaceAssignmentWithComparisonFix.java   
public ReplaceAssignmentWithComparisonFix(PsiAssignmentExpression expr)
{
    super(expr);
}
项目:consulo-java    文件:ReplaceAssignmentWithOperatorAssignmentInspection.java   
@Override
public void visitAssignmentExpression(@NotNull PsiAssignmentExpression assignment) {
  super.visitAssignmentExpression(assignment);
  final IElementType assignmentTokenType = assignment.getOperationTokenType();
  if (!assignmentTokenType.equals(JavaTokenType.EQ)) {
    return;
  }
  final PsiExpression lhs = assignment.getLExpression();
  PsiExpression rhs = ParenthesesUtils.stripParentheses(assignment.getRExpression());
  if (rhs instanceof PsiTypeCastExpression) {
    final PsiTypeCastExpression typeCastExpression = (PsiTypeCastExpression)rhs;
    final PsiType castType = typeCastExpression.getType();
    if (castType == null || !castType.equals(lhs.getType())) {
      return;
    }
    rhs = ParenthesesUtils.stripParentheses(typeCastExpression.getOperand());
  }
  if (!(rhs instanceof PsiPolyadicExpression)) {
    return;
  }
  final PsiPolyadicExpression polyadicExpression = (PsiPolyadicExpression)rhs;
  final PsiExpression[] operands = polyadicExpression.getOperands();
  if (operands.length < 2) {
    return;
  }
  if (operands.length > 2 && !ParenthesesUtils.isAssociativeOperation(polyadicExpression)) {
    return;
  }
  for (PsiExpression operand : operands) {
    if (operand == null) {
      return;
    }
  }
  final IElementType expressionTokenType = polyadicExpression.getOperationTokenType();
  if (JavaTokenType.EQEQ.equals(expressionTokenType) || JavaTokenType.NE.equals(expressionTokenType)) {
    return;
  }
  if (ignoreLazyOperators) {
    if (JavaTokenType.ANDAND.equals(expressionTokenType) || JavaTokenType.OROR.equals(expressionTokenType)) {
      return;
    }
  }
  if (ignoreObscureOperators) {
    if (JavaTokenType.XOR.equals(expressionTokenType) || JavaTokenType.PERC.equals(expressionTokenType)) {
      return;
    }
  }
  if (!EquivalenceChecker.getCanonicalPsiEquivalence().expressionsAreEquivalent(lhs, operands[0])) {
    return;
  }
  registerError(assignment, lhs, polyadicExpression);
}
项目:consulo-java    文件:WellFormednessUtils.java   
public static boolean isWellFormed(@NotNull PsiAssignmentExpression expression) {

    final PsiExpression rhs = expression.getRExpression();
    return rhs != null;
  }