[java-refactoring] ChangeMethodSignatureFromUsageFix: remove external type annotations

Fixes IDEA-366962 Quick-fix for adding method parameter generates long jetbrains UnknownNullability annotation

GitOrigin-RevId: 03d9b8be45670e6a72696d740d7ca71d746c7267
This commit is contained in:
Tagir Valeev
2025-02-19 14:57:00 +00:00
committed by intellij-monorepo-bot
parent eef850617b
commit ae7957d3c7
3 changed files with 31 additions and 2 deletions
@@ -451,9 +451,10 @@ public class ChangeMethodSignatureFromUsageFix implements IntentionAction/*, Hig
if (PsiPolyExpressionUtil.isPolyExpression(expression)) return false;
PsiType exprType = CommonJavaRefactoringUtil.getTypeByExpression(expression);
if (exprType == null || PsiTypes.voidType().equals(exprType)) return false;
if (exprType instanceof PsiDisjunctionType) {
exprType = ((PsiDisjunctionType)exprType).getLeastUpperBound();
if (exprType instanceof PsiDisjunctionType disjunctionType) {
exprType = disjunctionType.getLeastUpperBound();
}
exprType = PsiTypesUtil.removeExternalAnnotations(exprType);
if (!PsiTypesUtil.allTypeParametersResolved(myTargetMethod, exprType)) return false;
JavaCodeStyleManager codeStyleManager = JavaCodeStyleManager.getInstance(expression.getProject());
String name = suggestUniqueParameterName(codeStyleManager, expression, exprType, existingNames);
@@ -0,0 +1,14 @@
// "Add 'Integer' as 1st parameter to method 'perform'" "true"
import java.util.concurrent.CompletableFuture;
public class FutureWhenDone {
public void handle(CompletableFuture<Integer> future) {
future.whenComplete((r, e) -> {
perform(r);
});
}
private void perform(Integer r) {
System.out.println();
}
}
@@ -0,0 +1,14 @@
// "Add 'Integer' as 1st parameter to method 'perform'" "true"
import java.util.concurrent.CompletableFuture;
public class FutureWhenDone {
public void handle(CompletableFuture<Integer> future) {
future.whenComplete((r, e) -> {
perform(<caret>r);
});
}
private void perform() {
System.out.println();
}
}