diff options
author | Sergey Prigogin | 2012-03-20 02:29:36 +0000 |
---|---|---|
committer | Sergey Prigogin | 2012-03-20 02:29:36 +0000 |
commit | d4a53f3f5b72fa9ed11ab2e1422e1b9021bb1447 (patch) | |
tree | c81b4eec74459ede24d8cb9dd330f441c55ea321 /core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/refactoring | |
parent | cc1209d0290ee877478b62db151ff4b3fc9f55dc (diff) | |
download | org.eclipse.cdt-d4a53f3f5b72fa9ed11ab2e1422e1b9021bb1447.tar.gz org.eclipse.cdt-d4a53f3f5b72fa9ed11ab2e1422e1b9021bb1447.tar.xz org.eclipse.cdt-d4a53f3f5b72fa9ed11ab2e1422e1b9021bb1447.zip |
Fixed IllegalStateException in Extract Function refactoring.
Diffstat (limited to 'core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/refactoring')
2 files changed, 9 insertions, 6 deletions
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/refactoring/code/flow/FlowAnalyzer.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/refactoring/code/flow/FlowAnalyzer.java index abb635e644b..dcaa03e2908 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/refactoring/code/flow/FlowAnalyzer.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/refactoring/code/flow/FlowAnalyzer.java @@ -911,8 +911,11 @@ abstract class FlowAnalyzer extends ASTGenericVisitor { if (binding instanceof IVariable) { IVariable variable= (IVariable) binding; if (!(variable instanceof IField)) { - int accessMode = CPPVariableReadWriteFlags.getReadWriteFlags(node); - setFlowInfo(node, new LocalFlowInfo(variable, accessMode, fFlowContext)); + int index = fFlowContext.getIndexFromLocal(variable); + if (index >= 0) { + int accessMode = CPPVariableReadWriteFlags.getReadWriteFlags(node); + setFlowInfo(node, new LocalFlowInfo(variable, index, accessMode, fFlowContext)); + } } } return PROCESS_SKIP; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/refactoring/code/flow/LocalFlowInfo.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/refactoring/code/flow/LocalFlowInfo.java index 8bbbb4945c6..4cd924edcc9 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/refactoring/code/flow/LocalFlowInfo.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/refactoring/code/flow/LocalFlowInfo.java @@ -16,11 +16,11 @@ import org.eclipse.cdt.core.dom.ast.IVariable; class LocalFlowInfo extends FlowInfo { private final int fVariableIndex; - public LocalFlowInfo(IVariable binding, int localAccessMode, FlowContext context) { + public LocalFlowInfo(IVariable binding, int variableIndex, int localAccessMode, FlowContext context) { super(NO_RETURN); - fVariableIndex= context.getIndexFromLocal(binding); - if (fVariableIndex < 0) - throw new IllegalStateException("Invalid local variable \"" + binding.getName() + "\" for the context."); //$NON-NLS-1$ //$NON-NLS-2$ + if (variableIndex < 0) + throw new IllegalArgumentException("Invalid index for local variable \"" + binding.getName()); //$NON-NLS-1$ + fVariableIndex= variableIndex; if (context.considerAccessMode()) { createAccessModeArray(context); context.manageLocal(binding); |