From ddf222ee46b658e6fe1b7858396e3f5d3dbf1018 Mon Sep 17 00:00:00 2001 From: Mike Aizatsky Date: Wed, 23 Mar 2005 20:28:44 +0300 Subject: [PATCH] Introduced ExceptionHandler in CodeFragment --- openapi/src/com/intellij/psi/PsiCodeFragment.java | 7 +++++++ source/com/intellij/codeInsight/ExceptionUtil.java | 5 +++++ .../intellij/psi/impl/source/PsiCodeFragmentImpl.java | 9 +++++++++ 3 files changed, 21 insertions(+) diff --git a/openapi/src/com/intellij/psi/PsiCodeFragment.java b/openapi/src/com/intellij/psi/PsiCodeFragment.java index 2f738e12c923..b2ed3260d382 100644 --- a/openapi/src/com/intellij/psi/PsiCodeFragment.java +++ b/openapi/src/com/intellij/psi/PsiCodeFragment.java @@ -16,6 +16,9 @@ public interface PsiCodeFragment extends PsiFile { void setVisibilityChecker(VisibilityChecker checker); VisibilityChecker getVisibilityChecker(); + void setExceptionHandler(ExceptionHandler checker); + ExceptionHandler getExceptionHandler(); + interface VisibilityChecker { Visibility isDeclarationVisible(PsiElement declaration, PsiElement place); @@ -35,4 +38,8 @@ public interface PsiCodeFragment extends PsiFile { } } } + + interface ExceptionHandler { + boolean isHandledException(PsiClassType exceptionType); + } } diff --git a/source/com/intellij/codeInsight/ExceptionUtil.java b/source/com/intellij/codeInsight/ExceptionUtil.java index ae1d6f47ac2f..c7bba8e53581 100644 --- a/source/com/intellij/codeInsight/ExceptionUtil.java +++ b/source/com/intellij/codeInsight/ExceptionUtil.java @@ -408,6 +408,11 @@ public class ExceptionUtil { return isHandled(parent, exceptionType, topElement); } } + else if (parent instanceof PsiCodeFragment) { + PsiCodeFragment codeFragment = (PsiCodeFragment)parent; + if (codeFragment.getExceptionHandler() == null) return false; + return codeFragment.getExceptionHandler().isHandledException(exceptionType); + } else if (parent instanceof JspFile) { return true; } diff --git a/source/com/intellij/psi/impl/source/PsiCodeFragmentImpl.java b/source/com/intellij/psi/impl/source/PsiCodeFragmentImpl.java index e88f447cd883..6b8e49d75fe9 100644 --- a/source/com/intellij/psi/impl/source/PsiCodeFragmentImpl.java +++ b/source/com/intellij/psi/impl/source/PsiCodeFragmentImpl.java @@ -28,6 +28,7 @@ public class PsiCodeFragmentImpl extends PsiFileImpl implements PsiCodeFragment, private PsiType myThisType; private LinkedHashMap myPseudoImports = new LinkedHashMap(); private VisibilityChecker myVisibilityChecker; + private ExceptionHandler myExceptionHandler; public PsiCodeFragmentImpl(Project project, IElementType contentElementType, @@ -248,4 +249,12 @@ public class PsiCodeFragmentImpl extends PsiFileImpl implements PsiCodeFragment, return new DocumentReference[]{DocumentReferenceByDocument.createDocumentReference(document)}; } } + + public ExceptionHandler getExceptionHandler() { + return myExceptionHandler; + } + + public void setExceptionHandler(final ExceptionHandler exceptionHandler) { + myExceptionHandler = exceptionHandler; + } }