X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/flow/InitializationFlowContext.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/flow/InitializationFlowContext.java index b5a4b2b..83cb333 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/flow/InitializationFlowContext.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/flow/InitializationFlowContext.java @@ -1,19 +1,19 @@ /******************************************************************************* - * Copyright (c) 2000, 2001, 2002 International Business Machines Corp. and others. + * Copyright (c) 2000, 2003 IBM Corporation and others. * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v0.5 + * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v05.html + * http://www.eclipse.org/legal/cpl-v10.html * * Contributors: * IBM Corporation - initial API and implementation - ******************************************************************************/ + *******************************************************************************/ package net.sourceforge.phpdt.internal.compiler.flow; -import net.sourceforge.phpdt.internal.compiler.ast.AstNode; import net.sourceforge.phpdt.internal.compiler.lookup.BlockScope; import net.sourceforge.phpdt.internal.compiler.lookup.ReferenceBinding; import net.sourceforge.phpdt.internal.compiler.lookup.TypeBinding; +import net.sourceforge.phpeclipse.internal.compiler.ast.AstNode; /** * Reflects the context of code analysis, keeping track of enclosing @@ -25,7 +25,7 @@ public class InitializationFlowContext extends ExceptionHandlingFlowContext { public TypeBinding[] thrownExceptions = new TypeBinding[5]; public AstNode[] exceptionThrowers = new AstNode[5]; public FlowInfo[] exceptionThrowerFlowInfos = new FlowInfo[5]; - + public InitializationFlowContext( FlowContext parent, AstNode associatedNode, @@ -33,9 +33,9 @@ public class InitializationFlowContext extends ExceptionHandlingFlowContext { super( parent, associatedNode, - new ReferenceBinding[] { scope.getJavaLangThrowable()}, - // tolerate any kind of exception, but record them - scope, FlowInfo.DeadEnd); + NoExceptions, // no exception allowed by default + scope, + FlowInfo.DEAD_END); } public void checkInitializerExceptions( @@ -51,6 +51,16 @@ public class InitializationFlowContext extends ExceptionHandlingFlowContext { } } + public String individualToString() { + + StringBuffer buffer = new StringBuffer("Initialization flow context"); //$NON-NLS-1$ + for (int i = 0; i < exceptionCount; i++) { + buffer.append('[').append(thrownExceptions[i].readableName()); + buffer.append('-').append(exceptionThrowerFlowInfos[i].toString()).append(']'); + } + return buffer.toString(); + } + public void recordHandlingException( ReferenceBinding exceptionType, UnconditionalFlowInfo flowInfo, @@ -58,6 +68,7 @@ public class InitializationFlowContext extends ExceptionHandlingFlowContext { AstNode invocationSite, boolean wasMasked) { + // even if unreachable code, need to perform unhandled exception diagnosis int size = thrownExceptions.length; if (exceptionCount == size) { System.arraycopy( @@ -83,4 +94,4 @@ public class InitializationFlowContext extends ExceptionHandlingFlowContext { exceptionThrowers[exceptionCount] = invocationSite; exceptionThrowerFlowInfos[exceptionCount++] = flowInfo.copy(); } -} \ No newline at end of file +}