ensure class added to the throws list is visible outside of method

IDEA-187595
This commit is contained in:
Anna.Kozlova
2018-03-14 17:39:04 +01:00
parent fb44d01f44
commit 6a9bc6782d
3 changed files with 31 additions and 1 deletions
@@ -192,7 +192,11 @@ public final class PsiUtil extends PsiUtilCore {
ref = factory.createReferenceElementByFQClassName(exceptionName, method.getResolveScope());
}
else {
PsiClassType type = factory.createType(exceptionClass);
PsiClass superClass = exceptionClass.getSuperClass();
while (superClass != null && isLocalOrAnonymousClass(superClass)) {
superClass = superClass.getSuperClass();
}
PsiClassType type = factory.createType(superClass != null ? superClass : exceptionClass);
ref = factory.createReferenceElementByType(type);
}
throwsList.add(ref);
@@ -0,0 +1,13 @@
// "Add exception to method signature" "true"
class C {
interface I { }
public void localException() throws Exception {
class Ex extends Exception { }
class LocalException extends Ex implements I { }
throw new LocalException();
}
}
@@ -0,0 +1,13 @@
// "Add exception to method signature" "true"
class C {
interface I { }
public void localException() {
class Ex extends Exception { }
class LocalException extends Ex implements I { }
throw new LocalE<caret>xception();
}
}