mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-10-22 07:34:00 +07:00
guava type migration: convert anonymous Function-s with runtime retention policy annotations to anonymous classes except @javax.annotations.Nullable (can be configured in settings)
This commit is contained in:
1 parent
b19935c978
commit
0790362737
21 files changed
+323
-58
No files matched your search
+2
-1
@@ -44,6 +44,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class IntroduceParameterDialog extends RefactoringDialog {
|
||||
@@ -234,7 +235,7 @@ public class IntroduceParameterDialog extends RefactoringDialog {
|
||||
myCbCollapseToLambda = new NonFocusableCheckBox(RefactoringBundle.message("introduce.parameter.convert.lambda"));
|
||||
final PsiAnonymousClass anonymClass = myExpression instanceof PsiNewExpression ? ((PsiNewExpression)myExpression).getAnonymousClass()
|
||||
: null;
|
||||
myCbCollapseToLambda.setVisible(anonymClass != null && AnonymousCanBeLambdaInspection.canBeConvertedToLambda(anonymClass, false));
|
||||
myCbCollapseToLambda.setVisible(anonymClass != null && AnonymousCanBeLambdaInspection.canBeConvertedToLambda(anonymClass, false, Collections.emptySet()));
|
||||
myCbCollapseToLambda.setSelected(PropertiesComponent.getInstance(myProject).getBoolean(INTRODUCE_PARAMETER_LAMBDA));
|
||||
gbConstraints.gridy++;
|
||||
panel.add(myCbCollapseToLambda, gbConstraints);
|
||||
|
||||
@@ -447,6 +447,11 @@ public class TypeEvaluator {
|
||||
return migrationTtype;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public <T> T getSettings(Class<T> aClass) {
|
||||
return myRules.getConversionSettings(aClass);
|
||||
}
|
||||
|
||||
private class SubstitutorBuilder {
|
||||
private final Map<PsiTypeParameter, PsiType> myMapping;
|
||||
private final PsiMethod myMethod;
|
||||
|
||||
@@ -28,7 +28,6 @@ import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.PsiImplUtil;
|
||||
import com.intellij.psi.impl.source.PsiClassReferenceType;
|
||||
import com.intellij.psi.impl.source.PsiImmediateClassType;
|
||||
import com.intellij.psi.javadoc.PsiDocTagValue;
|
||||
import com.intellij.psi.search.PsiSearchScopeUtil;
|
||||
@@ -46,7 +45,7 @@ import com.intellij.refactoring.typeMigration.usageInfo.TypeMigrationUsageInfo;
|
||||
import com.intellij.usageView.UsageInfo;
|
||||
import com.intellij.util.*;
|
||||
import com.intellij.util.concurrency.Semaphore;
|
||||
import com.intellij.util.containers.*;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.graph.DFSTBuilder;
|
||||
import com.intellij.util.graph.GraphGenerator;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -55,8 +54,6 @@ import org.jetbrains.annotations.TestOnly;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.util.*;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
|
||||
/**
|
||||
* @author db
|
||||
@@ -296,6 +293,11 @@ public class TypeMigrationLabeler {
|
||||
return new MigrationProducer(conversions);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public <T> T getSettings(Class<T> aClass) {
|
||||
return myRules.getConversionSettings(aClass);
|
||||
}
|
||||
|
||||
class MigrationProducer {
|
||||
private final Map<UsageInfo, Object> myRemainConversions;
|
||||
|
||||
@@ -353,10 +355,6 @@ public class TypeMigrationLabeler {
|
||||
Object getConversion(UsageInfo info) {
|
||||
return myRemainConversions.remove(info);
|
||||
}
|
||||
|
||||
boolean allOfConversionsUsed() {
|
||||
return myRemainConversions.isEmpty();
|
||||
}
|
||||
}
|
||||
|
||||
void postProcessNewExpression(@NotNull PsiNewExpression expression) {
|
||||
|
||||
+10
-8
@@ -35,10 +35,8 @@ import com.intellij.ui.content.Content;
|
||||
import com.intellij.usageView.UsageInfo;
|
||||
import com.intellij.usageView.UsageViewDescriptor;
|
||||
import com.intellij.usageView.UsageViewManager;
|
||||
import com.intellij.usages.Usage;
|
||||
import com.intellij.util.*;
|
||||
import com.intellij.util.containers.*;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
import gnu.trove.THashSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -242,13 +240,14 @@ public class TypeMigrationProcessor extends BaseRefactoringProcessor {
|
||||
((PsiVariable)element).normalizeDeclaration();
|
||||
}
|
||||
}
|
||||
change(myLabeler, usages);
|
||||
change(usages, myLabeler, myProject);
|
||||
}
|
||||
|
||||
public static void change(TypeMigrationLabeler labeler, UsageInfo[] usages) {
|
||||
final List<PsiNewExpression> newExpressionsToCheckDiamonds = new SmartList<PsiNewExpression>();
|
||||
public static void change(UsageInfo[] usages, TypeMigrationLabeler labeler, Project project) {
|
||||
final List<SmartPsiElementPointer<PsiNewExpression>> newExpressionsToCheckDiamonds = new SmartList<>();
|
||||
final TypeMigrationLabeler.MigrationProducer producer = labeler.createMigratorFor(usages);
|
||||
|
||||
final SmartPointerManager smartPointerManager = SmartPointerManager.getInstance(project);
|
||||
List<UsageInfo> nonCodeUsages = new ArrayList<UsageInfo>();
|
||||
for (UsageInfo usage : usages) {
|
||||
if (((TypeMigrationUsageInfo)usage).isExcluded()) continue;
|
||||
@@ -260,7 +259,7 @@ public class TypeMigrationProcessor extends BaseRefactoringProcessor {
|
||||
producer.change((TypeMigrationUsageInfo)usage, new Consumer<PsiNewExpression>() {
|
||||
@Override
|
||||
public void consume(@NotNull PsiNewExpression expression) {
|
||||
newExpressionsToCheckDiamonds.add(expression);
|
||||
newExpressionsToCheckDiamonds.add(smartPointerManager.createSmartPsiElementPointer(expression));
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -269,8 +268,11 @@ public class TypeMigrationProcessor extends BaseRefactoringProcessor {
|
||||
}
|
||||
}
|
||||
|
||||
for (PsiNewExpression newExpression : newExpressionsToCheckDiamonds) {
|
||||
labeler.postProcessNewExpression(newExpression);
|
||||
for (SmartPsiElementPointer<PsiNewExpression> newExpressionPointer : newExpressionsToCheckDiamonds) {
|
||||
final PsiNewExpression newExpression = newExpressionPointer.getElement();
|
||||
if (newExpression != null) {
|
||||
labeler.postProcessNewExpression(newExpression);
|
||||
}
|
||||
}
|
||||
|
||||
for (UsageInfo usageInfo : nonCodeUsages) {
|
||||
|
||||
@@ -27,28 +27,42 @@ import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author db
|
||||
* Date: Oct 2, 2004
|
||||
*/
|
||||
public class TypeMigrationRules {
|
||||
private final LinkedList<TypeConversionRule> myConversionRules = new LinkedList<TypeConversionRule>();
|
||||
private final List<TypeConversionRule> myConversionRules;
|
||||
private final Map<Class, Object> myConversionCustomSettings = new HashMap<>();
|
||||
private SearchScope mySearchScope;
|
||||
|
||||
private final MigrateGetterNameSetting myMigrateGetterNameSetting = new MigrateGetterNameSetting();
|
||||
|
||||
public TypeMigrationRules() {
|
||||
final TypeConversionRule[] extensions = Extensions.getExtensions(TypeConversionRule.EP_NAME);
|
||||
myConversionRules = new ArrayList<>(extensions.length + 2);
|
||||
myConversionRules.add(new RootTypeConversionRule());
|
||||
myConversionRules.add(new DisjunctionTypeConversionRule());
|
||||
ContainerUtil.addAll(myConversionRules, Extensions.getExtensions(TypeConversionRule.EP_NAME));
|
||||
ContainerUtil.addAll(myConversionRules, extensions);
|
||||
}
|
||||
|
||||
public void addConversionDescriptor(TypeConversionRule rule) {
|
||||
myConversionRules.add(rule);
|
||||
}
|
||||
|
||||
public void addConversionRuleSettings(Object settings) {
|
||||
myConversionCustomSettings.put(settings.getClass(), settings);
|
||||
}
|
||||
|
||||
public <T> T getConversionSettings(Class<T> aClass) {
|
||||
return (T)myConversionCustomSettings.get(aClass);
|
||||
}
|
||||
|
||||
@NonNls
|
||||
@Nullable
|
||||
public TypeConversionDescriptorBase findConversion(final PsiType from, final PsiType to, final PsiMember member, final PsiExpression context,
|
||||
|
||||
@@ -229,7 +229,7 @@ public class MigrationPanel extends JPanel implements Disposable {
|
||||
}
|
||||
new WriteCommandAction(myProject) {
|
||||
protected void run(@NotNull Result result) throws Throwable {
|
||||
TypeMigrationProcessor.change(myLabeler, usages);
|
||||
TypeMigrationProcessor.change(usages, myLabeler, myProject);
|
||||
}
|
||||
}.execute();
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user