Moved exceptions to upper level

This commit is contained in:
Mike Aizatsky
2005-02-17 23:10:19 +03:00
parent c9828cf414
commit eb43850bfc
17 changed files with 72 additions and 82 deletions
@@ -107,7 +107,7 @@ public class ExceptionUtil {
addExceptions(array, thrownExceptions);
}
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
// incomplete code
}
}
@@ -432,7 +432,7 @@ public class ExceptionUtil {
int completionReasons = ControlFlowUtil.getCompletionReasons(flow, 0, flow.getSize());
if ((completionReasons & ControlFlowUtil.NORMAL_COMPLETION_REASON) == 0) return true;
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
return true;
}
}
@@ -58,7 +58,7 @@ public class HighlightControlFlowUtil {
return highlightInfo;
}
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
// incomplete code
}
return null;
@@ -82,7 +82,7 @@ public class HighlightControlFlowUtil {
"Unreachable statement");
}
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
// incomplete code
}
return null;
@@ -231,7 +231,7 @@ public class HighlightControlFlowUtil {
ControlFlow controlFlow = ControlFlowFactory.getControlFlow(context, LocalsOrMyInstanceFieldsControlFlowPolicy.getInstance());
return ControlFlowUtil.isVariableDefinitelyAssigned(variable, controlFlow);
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
return false;
}
}
@@ -241,7 +241,7 @@ public class HighlightControlFlowUtil {
ControlFlow controlFlow = ControlFlowFactory.getControlFlow(context, LocalsOrMyInstanceFieldsControlFlowPolicy.getInstance());
return ControlFlowUtil.isVariableDefinitelyNotAssigned(variable, controlFlow);
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
return false;
}
}
@@ -386,7 +386,7 @@ public class HighlightControlFlowUtil {
final ControlFlow controlFlow = ControlFlowFactory.getControlFlow(topBlock, LocalsOrMyInstanceFieldsControlFlowPolicy.getInstance());
codeBlockProblems = ControlFlowUtil.getReadBeforeWrite(controlFlow);
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
codeBlockProblems = new ArrayList<PsiReferenceExpression>();
}
uninitializedVarProblems.put(topBlock, codeBlockProblems);
@@ -467,7 +467,7 @@ public class HighlightControlFlowUtil {
break;
}
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
// incomplete code
return null;
}
@@ -515,7 +515,7 @@ public class HighlightControlFlowUtil {
final ControlFlow controlFlow = ControlFlowFactory.getControlFlow(codeBlock, LocalsOrMyInstanceFieldsControlFlowPolicy.getInstance());
codeBlockProblems = ControlFlowUtil.getInitializedTwice(controlFlow);
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
codeBlockProblems = new ArrayList<PsiElement>();
}
finalVarProblems.put(codeBlock, codeBlockProblems);
@@ -664,7 +664,7 @@ public class HighlightControlFlowUtil {
"Initializer must be able to complete normally");
}
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
// incomplete code
}
return null;
@@ -14,13 +14,9 @@ import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.psi.controlFlow.ControlFlow;
import com.intellij.psi.controlFlow.ControlFlowAnalyzer;
import com.intellij.psi.controlFlow.ControlFlowFactory;
import com.intellij.psi.controlFlow.LocalsOrMyInstanceFieldsControlFlowPolicy;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.psi.controlFlow.ControlFlowUtil;
import com.intellij.psi.controlFlow.*;
import com.intellij.util.IncorrectOperationException;
import java.util.ArrayList;
@@ -103,7 +99,7 @@ public class DeferFinalAssignmentFix implements IntentionAction {
try {
controlFlow = ControlFlowFactory.getControlFlow(outerCodeBlock, LocalsOrMyInstanceFieldsControlFlowPolicy.getInstance(), false);
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
return;
}
int minOffset = 0;
@@ -7,10 +7,7 @@ import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.controlFlow.ControlFlow;
import com.intellij.psi.controlFlow.ControlFlowAnalyzer;
import com.intellij.psi.controlFlow.ControlFlowUtil;
import com.intellij.psi.controlFlow.LocalsOrMyInstanceFieldsControlFlowPolicy;
import com.intellij.psi.controlFlow.*;
import com.intellij.util.IncorrectOperationException;
/**
@@ -43,7 +40,7 @@ public class RemoveRedundantElseAction implements IntentionAction {
int endOffset = controlFlow.getEndOffset(ifStatement.getThenBranch());
return !ControlFlowUtil.canCompleteNormally(controlFlow, startOffset,endOffset);
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
return false;
}
}
@@ -22,10 +22,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.EmptyRunnable;
import com.intellij.openapi.wm.WindowManager;
import com.intellij.psi.*;
import com.intellij.psi.controlFlow.ControlFlow;
import com.intellij.psi.controlFlow.ControlFlowAnalyzer;
import com.intellij.psi.controlFlow.ControlFlowUtil;
import com.intellij.psi.controlFlow.LocalsOrMyInstanceFieldsControlFlowPolicy;
import com.intellij.psi.controlFlow.*;
import com.intellij.psi.jsp.JspFile;
import com.intellij.psi.search.LocalSearchScope;
import com.intellij.psi.search.PsiSearchHelper;
@@ -377,7 +374,7 @@ public class HighlightUsagesHandler extends HighlightHandlerBase {
return new DoHighlightExitPointsRunnable(project, editor, exitStatements.toArray(new PsiElement[exitStatements.size()]));
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
return EMPTY_HIGHLIGHT_RUNNABLE;
}
}
@@ -148,7 +148,7 @@ public class InvertIfConditionAction extends BaseIntentionAction {
ControlFlow controlFlow = new ControlFlowAnalyzer(element, LocalsOrMyInstanceFieldsControlFlowPolicy.getInstance(), false, false).buildControlFlow();
return controlFlow;
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
return ControlFlow.EMPTY;
}
}
@@ -113,7 +113,7 @@ public class DefUseUtil {
try {
flow = new ControlFlowAnalyzer(body, ourPolicy).buildControlFlow();
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
return null;
}
Instruction[] instructions = flow.getInstructions();
@@ -266,7 +266,7 @@ public class DefUseUtil {
}
}.get(def, ref);
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
return null;
}
}
@@ -302,7 +302,7 @@ public class DefUseUtil {
}
}.get(def, ref);
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
return null;
}
}
@@ -317,7 +317,7 @@ public class DefUseUtil {
final PsiCodeBlock body;
protected RefsDefs(PsiCodeBlock body) throws ControlFlowAnalyzer.AnalysisCanceledException {
protected RefsDefs(PsiCodeBlock body) throws AnalysisCanceledException {
this.body = body;
flow = new ControlFlowAnalyzer(body, ourPolicy, false, false, true).buildControlFlow();
instructions = flow.getInstructions();
@@ -8,10 +8,7 @@ import com.intellij.codeInspection.ex.BaseLocalInspectionTool;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.controlFlow.ControlFlow;
import com.intellij.psi.controlFlow.ControlFlowAnalyzer;
import com.intellij.psi.controlFlow.ControlFlowPolicy;
import com.intellij.psi.controlFlow.ControlFlowUtil;
import com.intellij.psi.controlFlow.*;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.IncorrectOperationException;
@@ -89,7 +86,7 @@ public class LocalCanBeFinal extends BaseLocalInspectionTool {
}
}).buildControlFlow();
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
return null;
}
@@ -14,10 +14,7 @@ import com.intellij.j2ee.J2EERolesUtil;
import com.intellij.j2ee.ejb.role.EjbClassRole;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.psi.*;
import com.intellij.psi.controlFlow.ControlFlow;
import com.intellij.psi.controlFlow.ControlFlowAnalyzer;
import com.intellij.psi.controlFlow.ControlFlowUtil;
import com.intellij.psi.controlFlow.LocalsOrMyInstanceFieldsControlFlowPolicy;
import com.intellij.psi.controlFlow.*;
import com.intellij.psi.util.PsiFormatUtil;
import java.util.*;
@@ -245,7 +242,7 @@ public class RefClass extends RefElement {
try {
flow = analyzer.buildControlFlow();
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
flow = ControlFlow.EMPTY;
}
PsiVariable[] ssaVariables = ControlFlowUtil.getSSAVariables(flow, false);
@@ -284,7 +281,7 @@ public class RefClass extends RefElement {
try {
flow = analyzer.buildControlFlow();
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
flow = ControlFlow.EMPTY;
}
@@ -0,0 +1,18 @@
package com.intellij.psi.controlFlow;
import com.intellij.psi.PsiElement;
/**
* @author mike
*/
public class AnalysisCanceledException extends Exception {
private final PsiElement myErrorElement;
public AnalysisCanceledException(PsiElement errorElement) {
myErrorElement = errorElement;
}
public PsiElement getErrorElement() {
return myErrorElement;
}
}
@@ -0,0 +1,19 @@
package com.intellij.psi.controlFlow;
import com.intellij.psi.PsiElement;
/**
* @author mike
*/
class AnalysisCanceledSoftException extends RuntimeException {
private final PsiElement myErrorElement;
public AnalysisCanceledSoftException(PsiElement errorElement) {
myErrorElement = errorElement;
}
public PsiElement getErrorElement() {
return myErrorElement;
}
}
@@ -199,31 +199,6 @@ public class ControlFlowAnalyzer extends PsiElementVisitor {
return myCurrentFlow;
}
public static class AnalysisCanceledException extends Exception {
private final PsiElement myErrorElement;
public AnalysisCanceledException(PsiElement errorElement) {
myErrorElement = errorElement;
}
public PsiElement getErrorElement() {
return myErrorElement;
}
}
private static class AnalysisCanceledSoftException extends RuntimeException {
private final PsiElement myErrorElement;
public AnalysisCanceledSoftException(PsiElement errorElement) {
myErrorElement = errorElement;
}
public PsiElement getErrorElement() {
return myErrorElement;
}
}
private void startElement(PsiElement element) {
if (PsiUtil.hasErrorElementChild(element)) {
// do not perform control flow analysis for incomplete code
@@ -35,11 +35,11 @@ public class ControlFlowFactory {
}
}
public static ControlFlow getControlFlow(PsiElement element, ControlFlowPolicy policy) throws ControlFlowAnalyzer.AnalysisCanceledException {
public static ControlFlow getControlFlow(PsiElement element, ControlFlowPolicy policy) throws AnalysisCanceledException {
return getControlFlow(element, policy, true);
}
public static ControlFlow getControlFlow(PsiElement element, ControlFlowPolicy policy, boolean evaluateConstantIfCondition) throws ControlFlowAnalyzer.AnalysisCanceledException {
public static ControlFlow getControlFlow(PsiElement element, ControlFlowPolicy policy, boolean evaluateConstantIfCondition) throws AnalysisCanceledException {
SoftReference<ControlFlowContext> ref = element.getUserData(CONTROL_FLOW_KEY);
ControlFlowContext flows = ref == null ? null : ref.get();
ControlFlowContext currentFlow = flows;
@@ -1392,7 +1392,7 @@ public class ControlFlowUtil {
try {
flow = ControlFlowFactory.getControlFlow(codeBlock, LocalsOrMyInstanceFieldsControlFlowPolicy.getInstance(), false);
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
return false;
}
final PsiAssignmentExpression assignmentExpression = (PsiAssignmentExpression)expression.getParent();
@@ -16,10 +16,7 @@ import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.wm.WindowManager;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.psi.controlFlow.ControlFlow;
import com.intellij.psi.controlFlow.ControlFlowAnalyzer;
import com.intellij.psi.controlFlow.ControlFlowUtil;
import com.intellij.psi.controlFlow.LocalsControlFlowPolicy;
import com.intellij.psi.controlFlow.*;
import com.intellij.psi.impl.source.jsp.JspFileImpl;
import com.intellij.psi.search.LocalSearchScope;
import com.intellij.psi.text.BlockSupport;
@@ -181,7 +178,7 @@ public class ExtractMethodProcessor implements MatchProvider {
try {
myControlFlow = analyzer.buildControlFlow();
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
throw new PrepareFailedException("Code contains syntax errors." +
"Cannot perform neccessary analysis.",
e.getErrorElement());
@@ -12,10 +12,7 @@ import com.intellij.openapi.editor.markup.TextAttributes;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.wm.WindowManager;
import com.intellij.psi.*;
import com.intellij.psi.controlFlow.ControlFlow;
import com.intellij.psi.controlFlow.ControlFlowAnalyzer;
import com.intellij.psi.controlFlow.ControlFlowUtil;
import com.intellij.psi.controlFlow.LocalsControlFlowPolicy;
import com.intellij.psi.controlFlow.*;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.PsiSearchHelper;
import com.intellij.psi.util.PsiTreeUtil;
@@ -138,7 +135,7 @@ class InlineLocalHandler {
}
}
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
}
if (!ApplicationManager.getApplication().isUnitTestMode()) {
@@ -180,7 +177,7 @@ class InlineLocalHandler {
try {
controlFlow = new ControlFlowAnalyzer(codeFragment, new LocalsControlFlowPolicy(codeFragment), false).buildControlFlow();
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
controlFlow = ControlFlow.EMPTY;
}
PsiElement insertAnchor = firstWriteUsage.getElement();
@@ -1024,7 +1024,7 @@ public class InlineMethodProcessor extends BaseRefactoringProcessor {
try {
controlFlow = new ControlFlowAnalyzer(body, new LocalsControlFlowPolicy(body), false).buildControlFlow();
}
catch (ControlFlowAnalyzer.AnalysisCanceledException e) {
catch (AnalysisCanceledException e) {
return false;
}
if (LOG.isDebugEnabled()) {