TypeMayBeWeakenedInspection: not weaken when resource expr: IDEA-185994

This commit is contained in:
Roman Ivanov
2018-02-02 11:45:27 +07:00
parent 5e128d61ca
commit 8c83b630bb
3 changed files with 31 additions and 0 deletions
@@ -132,6 +132,13 @@ public class WeakestTypeFinder {
return Collections.emptyList();
}
}
else if (referenceParent instanceof PsiResourceExpression) {
PsiClass closeable = facade.findClass(CommonClassNames.JAVA_LANG_AUTO_CLOSEABLE, scope);
if (closeable == null || variableOrMethodClass.equals(closeable)) {
return Collections.emptyList();
}
weakestTypeClasses.add(closeable);
}
else if (referenceParent instanceof PsiAssignmentExpression) {
final PsiAssignmentExpression assignmentExpression = (PsiAssignmentExpression)referenceParent;
if (!findWeakestType(referenceElement, assignmentExpression, useRighthandTypeAsWeakestTypeInAssignments, weakestTypeClasses)) {
@@ -0,0 +1,23 @@
import java.io.Closeable;
class DummyClass {
public void doSomething() {
}
}
class CloseableDummyClass extends DummyClass implements Closeable {
@Override
public void close() {
}
}
class CallerClass {
public void call(CloseableDummyClass closeableDummyClass) {
try (closeableDummyClass) {
closeableDummyClass.doSomething();
}
}
}
@@ -10,6 +10,7 @@ public class TypeMayBeWeakenedInspectionTest extends LightInspectionTestCase {
public void testNumberAdderDemo() { doTest(); }
public void testAutoClosableTest() { doTest(); }
public void testLambda() { doTest(); }
public void testTryWithResources() { doTest(); }
@Override
protected String[] getEnvironmentClasses() {