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

项目:jgiven-intellij-plugin    文件:ResolutionProvider.java   
@Nullable
Resolution getResolutionFrom(PsiField field) {
    PsiAnnotation annotation = scenarioStateProvider.getJGivenAnnotationOn(field);
    if (annotation == null) {
        return null;
    }

    PsiExpression annotationValue = annotationValueProvider.getAnnotationValue(annotation, FIELD_RESOLUTION);

    return Optional.ofNullable(annotationValue)
            .map(PsiElement::getText)
            .map(t -> {
                for (Resolution resolution : Resolution.values()) {
                    if (resolution != Resolution.AUTO && t.contains(resolution.name())) {
                        return resolution;
                    }
                }
                return getResolutionForFieldType(field);
            }).orElse(getResolutionForFieldType(field));
}
项目:manifold-ij    文件:ManHighlightInfoFilter.java   
private int findArgPos( PsiMethodCallExpression methodCall, PsiElement firstElem )
{
  PsiExpression[] args = methodCall.getArgumentList().getExpressions();
  for( int i = 0; i < args.length; i++ )
  {
    PsiExpression arg = args[i];
    PsiElement csr = firstElem;
    while( csr != null && csr != firstElem )
    {
      csr = csr.getParent();
    }
    if( csr == firstElem )
    {
      return i;
    }
  }
  throw new IllegalStateException();
}
项目:intellij-ce-playground    文件:ExpressionPredicate.java   
public boolean satisfiedBy(PsiElement element) {
  if (!(element instanceof PsiJavaToken)) {
    return false;
  }
  final PsiElement parent = element.getParent();
  if (!(parent instanceof PsiPolyadicExpression)) {
    return false;
  }
  final PsiPolyadicExpression expression = (PsiPolyadicExpression)parent;
  final PsiExpression[] operands = expression.getOperands();
  if (operands.length < 2) {
    return false;
  }
  PsiExpression prevOperand = null;
  for (PsiExpression operand : operands) {
    final PsiJavaToken token = expression.getTokenBeforeOperand(operand);
    if (element == token) {
      if (prevOperand == null || operand.getText().equals(prevOperand.getText())) {
        return false;
      }
      break;
    }
    prevOperand = operand;
  }
  return !ComparisonUtils.isComparison(expression);
}
项目:intellij-ce-playground    文件:SynchronizeOnLockInspection.java   
@Override
public void visitSynchronizedStatement(
  @NotNull PsiSynchronizedStatement statement) {
  super.visitSynchronizedStatement(statement);
  final PsiExpression lockExpression = statement.getLockExpression();
  if (lockExpression == null) {
    return;
  }
  final String type = TypeUtils.expressionHasTypeOrSubtype(
    lockExpression,
    "java.util.concurrent.locks.Lock",
    "java.util.concurrent.locks.ReadWriteLock");
  if (type == null) {
    return;
  }
  registerError(lockExpression, type);
}
项目:intellij-ce-playground    文件:ZeroLengthArrayInitializationInspectionBase.java   
@Override
public void visitArrayInitializerExpression(
  PsiArrayInitializerExpression expression) {
  super.visitArrayInitializerExpression(expression);
  final PsiExpression[] initializers = expression.getInitializers();
  if (initializers.length > 0) {
    return;
  }
  if (expression.getParent() instanceof PsiNewExpression) {
    return;
  }
  if (ExpressionUtils.isDeclaredConstant(expression)) {
    return;
  }
  registerError(expression);
}
项目:intellij-ce-playground    文件:FlipExpressionIntention.java   
@Override
public void processIntention(@NotNull PsiElement element) {
  final PsiJavaToken token = (PsiJavaToken)element;
  final PsiElement parent = token.getParent();
  if (!(parent instanceof PsiPolyadicExpression)) {
    return;
  }
  final PsiPolyadicExpression polyadicExpression = (PsiPolyadicExpression)parent;
  final PsiExpression[] operands = polyadicExpression.getOperands();
  final StringBuilder newExpression = new StringBuilder();
  String prevOperand = null;
  final String tokenText = token.getText() + ' '; // 2- -1 without the space is not legal
  for (PsiExpression operand : operands) {
    final PsiJavaToken token1 = polyadicExpression.getTokenBeforeOperand(operand);
    if (token == token1) {
      newExpression.append(operand.getText()).append(tokenText);
      continue;
    }
    if (prevOperand != null) {
      newExpression.append(prevOperand).append(tokenText);
    }
    prevOperand = operand.getText();
  }
  newExpression.append(prevOperand);
  PsiReplacementUtil.replaceExpression(polyadicExpression, newExpression.toString());
}
项目:intellij-ce-playground    文件:BigDecimalMethodWithoutRoundingCalledInspection.java   
@Override
public void visitMethodCallExpression(PsiMethodCallExpression expression) {
  super.visitMethodCallExpression(expression);
  final PsiReferenceExpression methodExpression = expression.getMethodExpression();
  final String name = methodExpression.getReferenceName();
  if (!"setScale".equals(name) && !"divide".equals(name)) {
    return;
  }
  final PsiExpressionList argumentList = expression.getArgumentList();
  if (PsiUtilCore.hasErrorElementChild(argumentList)) {
    return;
  }
  final PsiExpression[] arguments = argumentList.getExpressions();
  if (arguments.length != 1) {
    return;
  }
  if (!TypeUtils.expressionHasTypeOrSubtype(expression, "java.math.BigDecimal")) {
    return;
  }
  registerMethodCallError(expression);
}
项目:intellij-ce-playground    文件:ExtractMethodFix.java   
@Override
public void doFix(final Project project, ProblemDescriptor descriptor) {
  final PsiExpression expression =
    (PsiExpression)descriptor.getPsiElement();
  final JavaRefactoringActionHandlerFactory factory =
    JavaRefactoringActionHandlerFactory.getInstance();
  final RefactoringActionHandler extractHandler =
    factory.createExtractMethodHandler();
  final DataManager dataManager = DataManager.getInstance();
  final DataContext dataContext = dataManager.getDataContext();
  final Runnable runnable = new Runnable() {
    @Override
    public void run() {
      extractHandler.invoke(project,
                            new PsiElement[]{expression}, dataContext);
    }
  };
  if (ApplicationManager.getApplication().isUnitTestMode()) {
    runnable.run();
  }
  else {
    ApplicationManager.getApplication().invokeLater(runnable);
  }
}
项目:intellij-ce-playground    文件:IntroduceVariableDialog.java   
public IntroduceVariableDialog(Project project,
                               PsiExpression expression, int occurrencesCount, boolean anyLValueOccurences,
                               boolean declareFinalIfAll, TypeSelectorManager typeSelectorManager,
                               IntroduceVariableHandler.Validator validator) {
  super(project, true);
  myProject = project;
  myExpression = expression;
  myOccurrencesCount = occurrencesCount;
  myAnyLValueOccurences = anyLValueOccurences;
  myDeclareFinalIfAll = declareFinalIfAll;
  myTypeSelectorManager = typeSelectorManager;
  myValidator = validator;

  setTitle(REFACTORING_NAME);
  init();
}
项目:intellij-ce-playground    文件:SimpleDateFormatWithoutLocaleInspection.java   
@Override
public void visitNewExpression(@NotNull PsiNewExpression expression) {
  super.visitNewExpression(expression);
  if (!ExpressionUtils.hasType(expression, "java.text.SimpleDateFormat")) {
    return;
  }
  final PsiExpressionList argumentList = expression.getArgumentList();
  if (argumentList == null) {
    return;
  }
  final PsiExpression[] arguments = argumentList.getExpressions();
  for (PsiExpression argument : arguments) {
    if (ExpressionUtils.hasType(argument, "java.util.Locale")) {
      return;
    }
  }
  registerNewExpressionError(expression);
}
项目:intellij-ce-playground    文件:ShiftUtils.java   
public static boolean isPowerOfTwo(PsiExpression rhs) {
  if (!(rhs instanceof PsiLiteralExpression)) {
    return false;
  }
  final PsiLiteralExpression literal = (PsiLiteralExpression)rhs;
  final Object value = literal.getValue();
  if (!(value instanceof Number)) {
    return false;
  }
  if (value instanceof Double || value instanceof Float) {
    return false;
  }
  int intValue = ((Number)value).intValue();
  if (intValue <= 0) {
    return false;
  }
  while (intValue % 2 == 0) {
    intValue >>= 1;
  }
  return intValue == 1;
}
项目:intellij-ce-playground    文件:SmartCompletionTemplateItem.java   
@Override
public PsiType getType() {
  final Template template = getTemplate();
  String text = template.getTemplateText();
  StringBuilder resultingText = new StringBuilder(text);

  int segmentsCount = template.getSegmentsCount();

  for (int j = segmentsCount - 1; j >= 0; j--) {
    if (template.getSegmentName(j).equals(TemplateImpl.END)) {
      continue;
    }

    resultingText.insert(template.getSegmentOffset(j), "xxx");
  }

  try {
    final PsiExpression templateExpression = JavaPsiFacade.getElementFactory(myContext.getProject()).createExpressionFromText(resultingText.toString(), myContext);
    return templateExpression.getType();
  }
  catch (IncorrectOperationException e) { // can happen when text of the template does not form an expression
    return null;
  }
}
项目:intellij-ce-playground    文件:ExpressionTypeMacro.java   
@Nullable
@Override
public Result calculateResult(@NotNull Expression[] params, ExpressionContext context) {
  if (params.length == 1) {
    Result result = params[0].calculateResult(context);
    if (result != null) {
      PsiExpression expression = MacroUtil.resultToPsiExpression(result, context);
      if (expression != null) {
        PsiType type = expression.getType();
        if (type != null) {
          return new PsiTypeResult(type, context.getProject());
        }
      }
    }
  }

  return null;
}
项目:intellij-ce-playground    文件:ResultOfObjectAllocationIgnoredInspection.java   
@Override
public void visitExpressionStatement(@NotNull PsiExpressionStatement statement) {
  super.visitExpressionStatement(statement);
  final PsiExpression expression = statement.getExpression();
  if (!(expression instanceof PsiNewExpression)) {
    return;
  }
  final PsiNewExpression newExpression = (PsiNewExpression)expression;
  final PsiExpression[] arrayDimensions = newExpression.getArrayDimensions();
  if (arrayDimensions.length != 0) {
    return;
  }
  if (newExpression.getArrayInitializer() != null) {
    return;
  }
  registerNewExpressionError(newExpression);
}
项目:intellij-ce-playground    文件:IntroduceVariableTest.java   
public void testSiblingInnerClassType() {
  doTest(new MockIntroduceVariableHandler("vari", true, false, false, "A.B") {
    @Override
    public IntroduceVariableSettings getSettings(Project project, Editor editor,
                                                 PsiExpression expr, PsiExpression[] occurrences,
                                                 TypeSelectorManagerImpl typeSelectorManager,
                                                 boolean declareFinalIfAll,
                                                 boolean anyAssignmentLHS,
                                                 InputValidator validator,
                                                 PsiElement anchor, final OccurrencesChooser.ReplaceChoice replaceChoice) {
      final PsiType type = typeSelectorManager.getDefaultType();
      assertTrue(type.getPresentableText(), type.getPresentableText().equals("B"));
      return super.getSettings(project, editor, expr, occurrences, typeSelectorManager, declareFinalIfAll, anyAssignmentLHS,
                               validator, anchor, replaceChoice);
    }
  });
}
项目:intellij-ce-playground    文件:ConvertNumberIntentionBase.java   
@Override
protected void processIntention(@NotNull final PsiElement element) throws IncorrectOperationException {
  final PsiExpression expression = (PsiExpression)element;
  final Number value = (Number)ExpressionUtils.computeConstantExpression(expression);
  if (value == null) return;
  final PsiType type = expression.getType();
  final boolean negated = ExpressionUtils.isNegative(expression);

  final String resultString = convertValue(value, type, negated);
  if (resultString == null) return;

  if (negated) {
    PsiReplacementUtil.replaceExpression((PsiExpression)expression.getParent(), resultString);
  }
  else {
    PsiReplacementUtil.replaceExpression(expression, resultString);
  }
}
项目:GitHub    文件:InvalidR2UsageDetector.java   
private static boolean isR2Expression(PsiElement node) {
  if (node.getParent() == null) {
    return false;
  }
  String text = node.getText();
  PsiElement parent = LintUtils.skipParentheses(node.getParent());
  return (text.equals(R2) || text.contains(".R2"))
      && parent instanceof PsiExpression
      && endsWithAny(parent.getText(), SUPPORTED_TYPES);
}
项目:jgiven-intellij-plugin    文件:AnnotationValueProvider.java   
@Nullable
PsiExpression getAnnotationValue(PsiAnnotation annotation, String annotationKey) {
    PsiNameValuePair[] attributes = annotation.getParameterList().getAttributes();
    return Arrays.stream(attributes)
            .filter(a -> annotationKey.equalsIgnoreCase(a.getName()))
            .map(PsiNameValuePair::getValue)
            .filter(v -> v instanceof PsiExpression)
            .map(v -> (PsiExpression) v)
            .findFirst().orElse(null);
}
项目:nullability-annotations-inspection    文件:NullabilityAnnotationsInspection.java   
private boolean hasExpressionElement(PsiElement[] psiElements) {
    for (PsiElement psiElement : psiElements) {
        if ((psiElement instanceof PsiExpression)) {
            return true;
        }
    }
    return false;
}
项目:manifold-ij    文件:ManHighlightInfoFilter.java   
private PsiType findInitializerType( PsiElement firstElem )
{
  PsiElement csr = firstElem;
  while( csr != null && !(csr instanceof PsiLocalVariableImpl) )
  {
    csr = csr.getParent();
  }
  if( csr instanceof PsiLocalVariableImpl )
  {
    PsiExpression initializer = ((PsiLocalVariableImpl)csr).getInitializer();
    return initializer == null ? null : initializer.getType();
  }
  return null;
}
项目:manifold-ij    文件:VarHandler.java   
private PsiType processForeach( PsiElement parentDeclarationScope )
{
  PsiType result = null;
  if( parentDeclarationScope instanceof PsiForeachStatement )
  {
    final PsiForeachStatement foreachStatement = (PsiForeachStatement)parentDeclarationScope;
    final PsiExpression iteratedValue = foreachStatement.getIteratedValue();
    if( iteratedValue != null )
    {
      result = JavaGenericsUtil.getCollectionItemType( iteratedValue );
    }
  }
  return result;
}
项目:Android_Lint_SRP_Practice_Example    文件:ElementUtil.java   
private static void extractExpressions(@NonNull PsiElement element, List<PsiExpression> expressions) {
    for (PsiElement child : element.getChildren()) {
        if (child instanceof PsiExpression) {
            expressions.add((PsiExpression) child);
            continue;
        }
        extractExpressions(child, expressions);
    }
}
项目:Android_Lint_SRP_Practice_Example    文件:ElementUtil.java   
public static void debugVariable(PsiLocalVariable variable) {
    if (variable != null) {
        PsiIdentifier id = variable.getNameIdentifier();
        PsiTypeElement type = variable.getTypeElement();
        PsiExpression init = variable.getInitializer();
        System.out.println("variable -> " + variable.getText()
                + ", id=" + (id != null ? id.getText() : "null")
                + ", type=" + (type != null ? type.getText() : "null")
                + ", init=" + (init != null ? init.getText() : "null"));
    }
}
项目:Android_Lint_SRP_Practice_Example    文件:ElementUtil.java   
public static void debugExpressions(String tag, PsiElement root, List<PsiExpression> expressions) {
    System.out.println(tag + " :root=>>>>\n" + root.getText() + "\n<<<");
    for (PsiExpression expr : expressions) {
        System.out.println("expression -> " + expr.getText());
    }
    System.out.println();
}
项目:Android_Lint_SRP_Practice_Example    文件:ElementUtil.java   
public static void debugParameters(String tag, PsiElement root, List<PsiParameter> parameters) {
    System.out.println(tag + " :root=>>>>\n" + root.getText() + "\n<<<");
    for (PsiParameter param : parameters) {
        PsiIdentifier id = param.getNameIdentifier();
        PsiTypeElement type = param.getTypeElement();
        PsiExpression init = param.getInitializer();
        System.out.println("parameter -> " + param.getText()
                + ", id=" + (id != null ? id.getText() : "null")
                + ", type=" + (type != null ? type.getText() : "null"));
    }
    System.out.println();
}
项目:camel-idea-plugin    文件:CamelDocumentationProvider.java   
@Nullable
@Override
public String getQuickNavigateInfo(PsiElement element, PsiElement originalElement) {
    if (ServiceManager.getService(element.getProject(), CamelService.class).isCamelPresent()) {
        PsiExpressionList exps = PsiTreeUtil.getNextSiblingOfType(originalElement, PsiExpressionList.class);
        if (exps != null) {
            if (exps.getExpressions().length >= 1) {
                // grab first string parameter (as the string would contain the camel endpoint uri
                final PsiClassType stringType = PsiType.getJavaLangString(element.getManager(), element.getResolveScope());
                PsiExpression exp = Arrays.stream(exps.getExpressions()).filter(
                    e -> e.getType() != null && stringType.isAssignableFrom(e.getType()))
                    .findFirst().orElse(null);
                if (exp instanceof PsiLiteralExpression) {
                    Object o = ((PsiLiteralExpression) exp).getValue();
                    String val = o != null ? o.toString() : null;
                    // okay only allow this popup to work when its from a RouteBuilder class
                    PsiClass clazz = PsiTreeUtil.getParentOfType(originalElement, PsiClass.class);
                    if (clazz != null) {
                        PsiClassType[] types = clazz.getExtendsListTypes();
                        boolean found = Arrays.stream(types).anyMatch(p -> p.getClassName().equals("RouteBuilder"));
                        if (found) {
                            String componentName = StringUtils.asComponentName(val);
                            if (componentName != null) {
                                // the quick info cannot be so wide so wrap at 120 chars
                                return generateCamelComponentDocumentation(componentName, val, 120, element.getProject());
                            }
                        }
                    }
                }
            }
        }
    }

    return null;
}
项目:intellij-ce-playground    文件:ConvertToJBColorQuickFix.java   
@Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) {
  final PsiElement element = descriptor.getPsiElement();
  final PsiElementFactory factory = JavaPsiFacade.getInstance(project).getElementFactory();
  final String newJBColor = String.format("new %s(%s, new java.awt.Color())", JBColor.class.getName(), element.getText());
  final PsiExpression expression = factory.createExpressionFromText(newJBColor, element.getContext());
  final PsiElement newElement = element.replace(expression);
  final PsiElement el = JavaCodeStyleManager.getInstance(project).shortenClassReferences(newElement);
  final int offset = el.getTextOffset() + el.getText().length() - 2;
  final Editor editor = PsiUtilBase.findEditor(el);
  if (editor != null) {
    editor.getCaretModel().moveToOffset(offset);
  }
}
项目:intellij-ce-playground    文件:ConvertToJBColorConstantQuickFix.java   
@Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) {
  final PsiElement element = descriptor.getPsiElement();
  final PsiElementFactory factory = JavaPsiFacade.getInstance(project).getElementFactory();
  final String jbColorConstant = String.format("%s.%s", JBColor.class.getName(), myConstantName);
  final PsiExpression expression = factory.createExpressionFromText(jbColorConstant, element.getContext());
  final PsiElement newElement = element.replace(expression);
  JavaCodeStyleManager.getInstance(project).shortenClassReferences(newElement);
}
项目:intellij-ce-playground    文件:BooleanExpressionMayBeConditionalInspection.java   
@Override
protected void doFix(Project project, ProblemDescriptor descriptor)  {
  final PsiElement element = descriptor.getPsiElement();
  if (!(element instanceof PsiBinaryExpression)) {
    return;
  }
  final PsiBinaryExpression binaryExpression = (PsiBinaryExpression)element;
  final PsiExpression lhs = ParenthesesUtils.stripParentheses(binaryExpression.getLOperand());
  final PsiExpression rhs = ParenthesesUtils.stripParentheses(binaryExpression.getROperand());
  if (!(lhs instanceof PsiBinaryExpression) || !(rhs instanceof PsiBinaryExpression)) {
    return;
  }
  final PsiBinaryExpression lBinaryExpression = (PsiBinaryExpression)lhs;
  final PsiBinaryExpression rBinaryExpression = (PsiBinaryExpression)rhs;
  final PsiExpression llhs = ParenthesesUtils.stripParentheses(lBinaryExpression.getLOperand());
  final PsiExpression lrhs = ParenthesesUtils.stripParentheses(rBinaryExpression.getLOperand());
  if (llhs == null || lrhs == null) {
    return;
  }
  final PsiExpression thenExpression = ParenthesesUtils.stripParentheses(lBinaryExpression.getROperand());
  final PsiExpression elseExpression = ParenthesesUtils.stripParentheses(rBinaryExpression.getROperand());
  if (thenExpression == null || elseExpression == null) {
    return;
  }
  if (BoolUtils.isNegation(llhs) ) {
    PsiReplacementUtil.replaceExpression(binaryExpression,
                                         getText(lrhs) + '?' + getText(elseExpression) + ':' + getText(thenExpression));
  }
  else {
    PsiReplacementUtil.replaceExpression(binaryExpression,
                                         getText(llhs) + '?' + getText(thenExpression) + ':' + getText(elseExpression));
  }
}
项目:intellij-ce-playground    文件:ConstantOnRHSOfComparisonInspection.java   
@Override
public void visitBinaryExpression(@NotNull PsiBinaryExpression expression) {
  super.visitBinaryExpression(expression);
  if (!ComparisonUtils.isComparison(expression)) {
    return;
  }
  final PsiExpression lhs = expression.getLOperand();
  final PsiExpression rhs = expression.getROperand();
  if (!isConstantExpression(rhs) || isConstantExpression(lhs)) {
    return;
  }
  registerError(expression);
}
项目:intellij-ce-playground    文件:ConcatenationToMessageFormatActionTest.java   
public void doTest(String expressionText, String messageFormatText, String... foundExpressionTexts) {
  final PsiExpression expression = JavaPsiFacade.getElementFactory(getProject()).createExpressionFromText(expressionText, null);
  final StringBuilder result = new StringBuilder();
  final ArrayList<PsiExpression> args = new ArrayList<PsiExpression>();
  PsiConcatenationUtil.buildFormatString(expression, result, args, false);
  assertEquals(messageFormatText, result.toString());
  assertEquals(foundExpressionTexts.length, args.size());
  for (int i = 0; i < foundExpressionTexts.length; i++) {
    final String foundExpressionText = foundExpressionTexts[i];
    assertEquals(foundExpressionText, args.get(i).getText());
  }
}
项目:intellij-ce-playground    文件:ComparisonUtils.java   
public static boolean isEqualityComparison(@NotNull PsiExpression expression) {
  if (!(expression instanceof PsiPolyadicExpression)) {
    return false;
  }
  final PsiPolyadicExpression polyadicExpression = (PsiPolyadicExpression)expression;
  final IElementType tokenType = polyadicExpression.getOperationTokenType();
  return tokenType.equals(JavaTokenType.EQEQ) || tokenType.equals(JavaTokenType.NE);
}
项目:intellij-ce-playground    文件:PsiTypeCastExpressionPattern.java   
public PsiTypeCastExpressionPattern withOperand(final ElementPattern<? extends PsiExpression> operand) {
  return with(new PatternCondition<PsiTypeCastExpression>("withOperand") {
    @Override
    public boolean accepts(@NotNull PsiTypeCastExpression psiTypeCastExpression, ProcessingContext context) {
      return operand.accepts(psiTypeCastExpression.getOperand(), context);
    }
  });
}
项目:intellij-ce-playground    文件:PsiMethodCallPattern.java   
public PsiMethodCallPattern withQualifier(final ElementPattern<? extends PsiExpression> qualifier) {
  return with(new PatternCondition<PsiMethodCallExpression>("withQualifier") {
    @Override
    public boolean accepts(@NotNull PsiMethodCallExpression psiMethodCallExpression, ProcessingContext context) {
      return qualifier.accepts(psiMethodCallExpression.getMethodExpression().getQualifierExpression(), context);
    }
  });
}
项目:intellij-ce-playground    文件:ArrayElementDescriptorImpl.java   
public PsiExpression getDescriptorEvaluation(DebuggerContext context) throws EvaluateException {
  PsiElementFactory elementFactory = JavaPsiFacade.getInstance(context.getProject()).getElementFactory();
  try {
    return elementFactory.createExpressionFromText("this[" + myIndex + "]", null);
  }
  catch (IncorrectOperationException e) {
    throw new EvaluateException(e.getMessage(), e);
  }
}
项目:intellij-ce-playground    文件:ArgumentValueDescriptorImpl.java   
public PsiExpression getDescriptorEvaluation(DebuggerContext context) throws EvaluateException {
  PsiElementFactory elementFactory = JavaPsiFacade.getInstance(context.getProject()).getElementFactory();
  try {
    return elementFactory.createExpressionFromText(getName(), PositionUtil.getContextElement(context));
  }
  catch (IncorrectOperationException e) {
    throw new EvaluateException(DebuggerBundle.message("error.invalid.local.variable.name", getName()), e);
  }
}
项目:intellij-ce-playground    文件:LongLiteralsEndingWithLowercaseLInspection.java   
@Override
public void doFix(Project project, ProblemDescriptor descriptor)
  throws IncorrectOperationException {
  final PsiExpression literal =
    (PsiExpression)descriptor.getPsiElement();
  final String text = literal.getText();
  final String newText = text.replace('l', 'L');
  PsiReplacementUtil.replaceExpression(literal, newText);
}
项目:intellij-ce-playground    文件:InputValidator.java   
public boolean isOK(IntroduceVariableSettings settings) {
  String name = settings.getEnteredName();
  final PsiElement anchor;
  final boolean replaceAllOccurrences = settings.isReplaceAllOccurrences();
  if (replaceAllOccurrences) {
    anchor = myAnchorStatementIfAll;
  } else {
    anchor = myAnchorStatement;
  }
  final PsiElement scope = anchor.getParent();
  if(scope == null) return true;
  final MultiMap<PsiElement, String> conflicts = new MultiMap<PsiElement, String>();
  final HashSet<PsiVariable> reportedVariables = new HashSet<PsiVariable>();
  JavaUnresolvableLocalCollisionDetector.CollidingVariableVisitor visitor = new JavaUnresolvableLocalCollisionDetector.CollidingVariableVisitor() {
    public void visitCollidingElement(PsiVariable collidingVariable) {
      if (!reportedVariables.contains(collidingVariable)) {
        reportedVariables.add(collidingVariable);
        String message = RefactoringBundle.message("introduced.variable.will.conflict.with.0", RefactoringUIUtil.getDescription(collidingVariable, true));
        conflicts.putValue(collidingVariable, message);
      }
    }
  };
  JavaUnresolvableLocalCollisionDetector.visitLocalsCollisions(anchor, name, scope, anchor, visitor);
  if (replaceAllOccurrences) {
    final PsiExpression[] occurences = myOccurenceManager.getOccurrences();
    for (PsiExpression occurence : occurences) {
      IntroduceVariableBase.checkInLoopCondition(occurence, conflicts);
    }
  } else {
    IntroduceVariableBase.checkInLoopCondition(myOccurenceManager.getMainOccurence(), conflicts);
  }

  if (conflicts.size() > 0) {
    return myIntroduceVariableBase.reportConflicts(conflicts, myProject, settings);
  } else {
    return true;
  }
}
项目:intellij-ce-playground    文件:ConfusingFloatingPointLiteralInspection.java   
@Override
public void doFix(Project project, ProblemDescriptor descriptor) {
  final PsiExpression literalExpression = (PsiExpression)descriptor.getPsiElement();
  final String text = literalExpression.getText();
  final String newText = getCanonicalForm(text);
  PsiReplacementUtil.replaceExpression(literalExpression, newText);
}
项目:intellij-ce-playground    文件:AddClarifyingParenthesesPredicate.java   
public boolean satisfiedBy(@NotNull PsiElement element) {
  if (!(element instanceof PsiExpression)) {
    return false;
  }
  final PsiExpression expression = (PsiExpression)element;
  final PsiElement parent = element.getParent();
  return !UnclearBinaryExpressionInspection.mightBeConfusingExpression(parent) &&
         UnclearBinaryExpressionInspection.isUnclearExpression(expression, parent);
}