mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-10-02 10:14:57 +07:00
[java-inspections] ExtractMethodRecommender: disable for non-denotable output variable
Fixes IDEA-364433 "Method can be extracted" with 'var' and anonymous class leads to compile error (cherry picked from commit 8d2f0b12059c8412ed6e1c91d9b8e79ee70cb31c) IJ-CR-156964 GitOrigin-RevId: ebc0ceab00b591e4b139f79bd9bdf2fbd24af1ee
This commit is contained in:
committed by
intellij-monorepo-bot
parent
ebd0b33ffd
commit
1efe361fe9
+5
@@ -19,6 +19,7 @@ import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.tree.TokenSet;
|
||||
import com.intellij.psi.util.PropertyUtilBase;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiTypesUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.refactoring.extractMethod.newImpl.ExtractException;
|
||||
import com.intellij.refactoring.extractMethod.newImpl.ExtractMethodAnalyzerKt;
|
||||
@@ -96,6 +97,10 @@ public final class ExtractMethodRecommenderInspection extends AbstractBaseJavaLo
|
||||
if (variables.length != 1) continue;
|
||||
PsiVariable output = variables[0];
|
||||
if (SideEffectsVisitor.hasSideEffectOrSimilarUseOutside(range, output)) continue;
|
||||
PsiTypeElement typeElement = output.getTypeElement();
|
||||
if (typeElement == null || (typeElement.isInferredType() && !PsiTypesUtil.isDenotableType(output.getType(), output))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
List<PsiVariable> inputVariables = wrapper.getInputVariables(fragment, range, variables);
|
||||
if (inputVariables.size() > maxParameters) continue;
|
||||
|
||||
Reference in New Issue
Block a user