EA-70589 - IOE: PsiJavaParserFacadeImpl.createExpressionFromText

This commit is contained in:
Anna Kozlova
2015-09-29 17:59:47 +02:00
parent ef90ef8f63
commit 090038722a
3 changed files with 40 additions and 2 deletions
@@ -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) {
@@ -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() {}
}
}
@@ -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() {}
}
}