当前位置: 首页>>代码示例>>Java>>正文


Java PsiAssignmentExpression类代码示例

本文整理汇总了Java中com.intellij.psi.PsiAssignmentExpression的典型用法代码示例。如果您正苦于以下问题:Java PsiAssignmentExpression类的具体用法?Java PsiAssignmentExpression怎么用?Java PsiAssignmentExpression使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


PsiAssignmentExpression类属于com.intellij.psi包,在下文中一共展示了PsiAssignmentExpression类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: applyFix

import com.intellij.psi.PsiAssignmentExpression; //导入依赖的package包/类
@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));
}
 
开发者ID:consulo,项目名称:consulo-java,代码行数:22,代码来源:SimplifyToAssignmentFix.java

示例2: replaceMultiplyOrDivideAssignWithShiftAssign

import com.intellij.psi.PsiAssignmentExpression; //导入依赖的package包/类
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);
}
 
开发者ID:consulo,项目名称:consulo-java,代码行数:18,代码来源:ReplaceMultiplyWithShiftIntention.java

示例3: replaceShiftAssignWithMultiplyOrDivideAssign

import com.intellij.psi.PsiAssignmentExpression; //导入依赖的package包/类
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);
}
 
开发者ID:consulo,项目名称:consulo-java,代码行数:20,代码来源:ReplaceShiftWithMultiplyIntention.java

示例4: doFix

import com.intellij.psi.PsiAssignmentExpression; //导入依赖的package包/类
@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);
}
 
开发者ID:consulo,项目名称:consulo-java,代码行数:26,代码来源:ReplaceAssignmentWithOperatorAssignmentInspection.java

示例5: replaceSimplifiableAssignment

import com.intellij.psi.PsiAssignmentExpression; //导入依赖的package包/类
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 + ';');
}
 
开发者ID:consulo,项目名称:consulo-java,代码行数:23,代码来源:TrivialIfInspection.java

示例6: replaceSimplifiableAssignmentNegated

import com.intellij.psi.PsiAssignmentExpression; //导入依赖的package包/类
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 + ';');
}
 
开发者ID:consulo,项目名称:consulo-java,代码行数:25,代码来源:TrivialIfInspection.java

示例7: parse

import com.intellij.psi.PsiAssignmentExpression; //导入依赖的package包/类
/**
 * メソッドが変更するフィールド変数(状態)を解析
 * @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;
}
 
开发者ID:cch-robo,项目名称:Android_Lint_SRP_Practice_Example,代码行数:35,代码来源:SharingGroupClassificationDetector.java

示例8: extractAssignments

import com.intellij.psi.PsiAssignmentExpression; //导入依赖的package包/类
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);
    }
}
 
开发者ID:cch-robo,项目名称:Android_Lint_SRP_Practice_Example,代码行数:10,代码来源:ElementUtil.java

示例9: debugAssignments

import com.intellij.psi.PsiAssignmentExpression; //导入依赖的package包/类
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();
}
 
开发者ID:cch-robo,项目名称:Android_Lint_SRP_Practice_Example,代码行数:8,代码来源:ElementUtil.java

示例10: satisfiedBy

import com.intellij.psi.PsiAssignmentExpression; //导入依赖的package包/类
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);
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:11,代码来源:OperatorAssignmentPredicate.java

示例11: visitAssignmentExpression

import com.intellij.psi.PsiAssignmentExpression; //导入依赖的package包/类
@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);
}
 
开发者ID:lshain-android-source,项目名称:tools-idea,代码行数:16,代码来源:NestedAssignmentInspection.java

示例12: constructorAssignsAllFields

import com.intellij.psi.PsiAssignmentExpression; //导入依赖的package包/类
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();
}
 
开发者ID:jkovacs,项目名称:CopyConstructorPlugin,代码行数:30,代码来源:IncompleteCopyConstructorInspection.java

示例13: getLExpression

import com.intellij.psi.PsiAssignmentExpression; //导入依赖的package包/类
@Nullable
public PsiExpression getLExpression()
{
	if(myRExpression == null)
	{
		return null;
	}
	if(myRExpression.getParent() instanceof PsiAssignmentExpression)
	{
		return ((PsiAssignmentExpression) myRExpression.getParent()).getLExpression();
	}
	return null;
}
 
开发者ID:consulo,项目名称:consulo-java,代码行数:14,代码来源:AssignInstruction.java

示例14: visitAssignmentExpression

import com.intellij.psi.PsiAssignmentExpression; //导入依赖的package包/类
@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;
  }
}
 
开发者ID:consulo,项目名称:consulo-java,代码行数:13,代码来源:VariableAssignedFromVisitor.java

示例15: shouldShowExplicitLambdaType

import com.intellij.psi.PsiAssignmentExpression; //导入依赖的package包/类
@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());
}
 
开发者ID:consulo,项目名称:consulo-java,代码行数:13,代码来源:JavaFoldingBuilder.java


注:本文中的com.intellij.psi.PsiAssignmentExpression类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。