mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
ignore non-physical context for future lambda in introduce (IDEA-186122)
This commit is contained in:
+13
@@ -199,6 +199,19 @@ public class AnonymousCanBeLambdaInspection extends AbstractBaseJavaLocalInspect
|
||||
PsiElement parent = aClass.getParent();
|
||||
final PsiElement lambdaContext = parent != null ? parent.getParent() : null;
|
||||
if (lambdaContext == null || !LambdaUtil.isValidLambdaContext(lambdaContext) && !(lambdaContext instanceof PsiReferenceExpression)) return false;
|
||||
return isLambdaForm(aClass, acceptParameterizedFunctionTypes, reportNotAnnotatedInterfaces, ignoredRuntimeAnnotations);
|
||||
}
|
||||
|
||||
public static boolean isLambdaForm(PsiAnonymousClass aClass,
|
||||
boolean acceptParameterizedFunctionTypes,
|
||||
@NotNull Set<String> ignoredRuntimeAnnotations) {
|
||||
return isLambdaForm(aClass, acceptParameterizedFunctionTypes, true, ignoredRuntimeAnnotations);
|
||||
}
|
||||
|
||||
public static boolean isLambdaForm(PsiAnonymousClass aClass,
|
||||
boolean acceptParameterizedFunctionTypes,
|
||||
boolean reportNotAnnotatedInterfaces,
|
||||
@NotNull Set<String> ignoredRuntimeAnnotations) {
|
||||
if (PsiUtil.getLanguageLevel(aClass).isAtLeast(LanguageLevel.JDK_1_8)) {
|
||||
final PsiClassType baseClassType = aClass.getBaseClassType();
|
||||
final PsiClassType.ClassResolveResult resolveResult = baseClassType.resolveGenerics();
|
||||
|
||||
+1
-1
@@ -160,7 +160,7 @@ class InlineToAnonymousConstructorProcessor {
|
||||
superNewExpression = (PsiNewExpression)ChangeContextUtil.decodeContextInfo(superNewExpression, superNewExpression.getAnonymousClass(), null);
|
||||
PsiAnonymousClass newExpressionAnonymousClass = superNewExpression.getAnonymousClass();
|
||||
if (newExpressionAnonymousClass != null &&
|
||||
AnonymousCanBeLambdaInspection.canBeConvertedToLambda(newExpressionAnonymousClass, false, Collections.emptySet())) {
|
||||
AnonymousCanBeLambdaInspection.isLambdaForm(newExpressionAnonymousClass, false, Collections.emptySet())) {
|
||||
PsiExpression lambda = AnonymousCanBeLambdaInspection.replaceAnonymousWithLambda(superNewExpression, newExpressionAnonymousClass.getBaseClassType());
|
||||
JavaCodeStyleManager.getInstance(newExpressionAnonymousClass.getProject()).shortenClassReferences(superNewExpression.replace(lambda));
|
||||
}
|
||||
|
||||
+1
-1
@@ -227,7 +227,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, Collections.emptySet()));
|
||||
myCbCollapseToLambda.setVisible(anonymClass != null && AnonymousCanBeLambdaInspection.isLambdaForm(anonymClass, false, Collections.emptySet()));
|
||||
myCbCollapseToLambda.setSelected(PropertiesComponent.getInstance(myProject).getBoolean(INTRODUCE_PARAMETER_LAMBDA));
|
||||
gbConstraints.gridy++;
|
||||
panel.add(myCbCollapseToLambda, gbConstraints);
|
||||
|
||||
Reference in New Issue
Block a user