mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
EA-70589 - IOE: PsiJavaParserFacadeImpl.createExpressionFromText
This commit is contained in:
+10
-2
@@ -26,6 +26,7 @@ import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
import com.intellij.psi.util.*;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.Nls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -413,8 +414,15 @@ public class LambdaCanBeMethodReferenceInspection extends BaseJavaBatchLocalInsp
|
||||
}
|
||||
|
||||
final PsiType qualifierExpressionType = qualifierExpression.getType();
|
||||
return qualifierExpressionType != null && !TypeConversionUtil.containsWildcards(qualifierExpressionType)
|
||||
? qualifierExpressionType.getCanonicalText() : getClassReferenceName(containingClass);
|
||||
if (qualifierExpressionType != null && !TypeConversionUtil.containsWildcards(qualifierExpressionType)) {
|
||||
try {
|
||||
final String canonicalText = qualifierExpressionType.getCanonicalText();
|
||||
JavaPsiFacade.getElementFactory(containingClass.getProject()).createExpressionFromText(canonicalText + "::foo", qualifierExpression);
|
||||
return canonicalText;
|
||||
}
|
||||
catch (IncorrectOperationException ignore){}
|
||||
}
|
||||
return getClassReferenceName(containingClass);
|
||||
}
|
||||
|
||||
private static String getClassReferenceName(PsiClass containingClass) {
|
||||
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// "Replace lambda with method reference" "true"
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
class Test<T> {
|
||||
|
||||
|
||||
class Bar {
|
||||
void f( ){
|
||||
Function<Test<T>.Bar, String> r = Bar::foo;
|
||||
}
|
||||
|
||||
private String foo() {}
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// "Replace lambda with method reference" "true"
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
class Test<T> {
|
||||
|
||||
|
||||
class Bar {
|
||||
void f( ){
|
||||
Function<Test<T>.Bar, String> r = (Test<T>.Bar t) -> t.fo<caret>o();
|
||||
}
|
||||
|
||||
private String foo() {}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user