コード例 #1
0
 private static boolean localVariableAreEquivalent(
     @NotNull PsiLocalVariable var1, @NotNull PsiLocalVariable var2) {
   final PsiType type1 = var1.getType();
   final PsiType type2 = var2.getType();
   if (!typesAreEquivalent(type1, type2)) {
     return false;
   }
   final String name1 = var1.getName();
   final String name2 = var2.getName();
   if (!name1.equals(name2)) {
     return false;
   }
   final PsiExpression initializer1 = var1.getInitializer();
   final PsiExpression initializer2 = var2.getInitializer();
   return expressionsAreEquivalent(initializer1, initializer2);
 }
コード例 #2
0
 private static void initialize(final PsiLocalVariable variable)
     throws IncorrectOperationException {
   PsiType type = variable.getType();
   String init = PsiTypesUtil.getDefaultValueOfType(type);
   PsiElementFactory factory =
       JavaPsiFacade.getInstance(variable.getProject()).getElementFactory();
   PsiExpression initializer = factory.createExpressionFromText(init, variable);
   variable.setInitializer(initializer);
 }
コード例 #3
0
 static PsiType getInitializerType(
     PsiType forcedType, PsiExpression parameterInitializer, PsiLocalVariable localVariable) {
   final PsiType initializerType;
   if (forcedType == null) {
     if (parameterInitializer == null) {
       if (localVariable != null) {
         initializerType = localVariable.getType();
       } else {
         LOG.assertTrue(false);
         initializerType = null;
       }
     } else {
       if (localVariable == null) {
         initializerType =
             RefactoringUtil.getTypeByExpressionWithExpectedType(parameterInitializer);
       } else {
         initializerType = localVariable.getType();
       }
     }
   } else {
     initializerType = forcedType;
   }
   return initializerType;
 }
コード例 #4
0
 private static PsiDeclarationStatement createNewDeclaration(
     @NotNull PsiLocalVariable variable, PsiExpression initializer)
     throws IncorrectOperationException {
   final PsiManager manager = variable.getManager();
   final PsiElementFactory factory =
       JavaPsiFacade.getInstance(manager.getProject()).getElementFactory();
   final PsiDeclarationStatement newDeclaration =
       factory.createVariableDeclarationStatement(
           variable.getName(), variable.getType(), initializer);
   if (variable.hasModifierProperty(PsiModifier.FINAL)) {
     final PsiLocalVariable newVariable =
         (PsiLocalVariable) newDeclaration.getDeclaredElements()[0];
     final PsiModifierList modifierList = newVariable.getModifierList();
     modifierList.setModifierProperty(PsiModifier.FINAL, true);
   }
   return newDeclaration;
 }
コード例 #5
0
  private static PsiStatement createAssignment(
      PsiLocalVariable local, String fieldname, PsiElementFactory factory) {
    try {
      String pattern = fieldname + "=0;";
      PsiExpressionStatement statement =
          (PsiExpressionStatement) factory.createStatementFromText(pattern, null);
      statement =
          (PsiExpressionStatement)
              CodeStyleManager.getInstance(local.getProject()).reformat(statement);

      PsiAssignmentExpression expr = (PsiAssignmentExpression) statement.getExpression();
      final PsiExpression initializer =
          RefactoringUtil.convertInitializerToNormalExpression(
              local.getInitializer(), local.getType());
      expr.getRExpression().replace(initializer);

      return statement;
    } catch (IncorrectOperationException e) {
      LOG.error(e);
      return null;
    }
  }