method return type in not used: fix for literal expressions(IDEA-184798)

This commit is contained in:
Anna.Kozlova
2018-01-11 13:34:40 +01:00
parent d2f7a6b367
commit 5f3f0f81a5
4 changed files with 28 additions and 2 deletions
@@ -56,8 +56,11 @@ public class RefJavaUtilImpl extends RefJavaUtil{
for (PsiReference reference : expression.getReferences()) {
PsiElement resolve = reference.resolve();
if (resolve instanceof PsiMember) {
final RefElement refClass = refFrom.getRefManager().getReference(resolve);
refFrom.addReference(refClass, resolve, psiFrom, false, true, null);
final RefElement refResolved = refFrom.getRefManager().getReference(resolve);
refFrom.addReference(refResolved, resolve, psiFrom, false, true, null);
if (refResolved instanceof RefMethod) {
updateRefMethod(resolve, refResolved, expression, psiFrom, refFrom);
}
}
}
}
@@ -239,6 +242,14 @@ public class RefJavaUtilImpl extends RefJavaUtil{
}
return;
}
if (refExpression instanceof PsiLiteralExpression){ //references in literal expressions
PsiType returnType = psiMethod.getReturnType();
if (!psiMethod.isConstructor() && !PsiType.VOID.equals(returnType)) {
refMethod.setReturnValueUsed(true);
addTypeReference(psiFrom, returnType, refFrom.getRefManager());
}
return;
}
PsiMethodCallExpression call = PsiTreeUtil.getParentOfType(
refExpression,
PsiMethodCallExpression.class
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<problems/>
@@ -0,0 +1,9 @@
class Test {
static String foo() {
return "";
}
{
Test.class.getMethod("foo");
}
}
@@ -55,6 +55,10 @@ public class UnusedReturnValueTest extends InspectionTestCase {
doTest();
}
public void testFromReflection() {
doTest();
}
public void testSimpleSetter() {
try {
myTool.IGNORE_BUILDER_PATTERN = true;