IDEA-126629 java.io.Closeable is not AutoCloseable in some cases
authorpeter <peter@jetbrains.com>
Tue, 23 Jun 2015 16:20:41 +0000 (18:20 +0200)
committerpeter <peter@jetbrains.com>
Tue, 23 Jun 2015 16:29:18 +0000 (18:29 +0200)
search for close() method in a correct scope

java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java
java/java-tests/testData/codeInsight/multipleJdks/java7/p/CloseableAutoCloseable.java

index 3eea64f740fa079b3ec26a622500f2a9035f24b2..26d23a2ade109f07f4fbb403560edf8f43e688bf 100644 (file)
@@ -1142,7 +1142,7 @@ public final class PsiUtil extends PsiUtilCore {
     final PsiClass autoCloseable = facade.findClass(CommonClassNames.JAVA_LANG_AUTO_CLOSEABLE, ProjectScope.getLibrariesScope(project));
     if (autoCloseable == null) return null;
 
-    if (!InheritanceUtil.isInheritorOrSelf(resourceClass, autoCloseable, true)) return null;
+    if (JavaClassSupers.getInstance().getSuperClassSubstitutor(autoCloseable, resourceClass, resourceType.getResolveScope(), PsiSubstitutor.EMPTY) == null) return null;
 
     final PsiMethod[] closes = autoCloseable.findMethodsByName("close", false);
     return closes.length == 1 ? resourceClass.findMethodBySignature(closes[0], true) : null;
index befd13ee94e227236aa2588d9e750f40ad4c954d..814564f69822fa8e6475c456aa6632ae8437f376 100644 (file)
@@ -1,11 +1,16 @@
 package p;
 
+import java.io.IOException;
+
 class Foo {
 
   {
     try (MyReader c1 = new MyReader() {}) {
 
     }
+    catch (IOException e) {
+      e.printStackTrace();
+    }
   }
 
 }
\ No newline at end of file