diff options
author | Andrew Niefer | 2005-04-26 18:27:37 +0000 |
---|---|---|
committer | Andrew Niefer | 2005-04-26 18:27:37 +0000 |
commit | b3cfc78c050474680292c6a446c7bfa9417141b6 (patch) | |
tree | 892be4096f5a1f1a6353c4210c7343a35020faff | |
parent | a88eb122a299e2ba9c922af7aec2c06c2608ca82 (diff) | |
download | org.eclipse.cdt-b3cfc78c050474680292c6a446c7bfa9417141b6.tar.gz org.eclipse.cdt-b3cfc78c050474680292c6a446c7bfa9417141b6.tar.xz org.eclipse.cdt-b3cfc78c050474680292c6a446c7bfa9417141b6.zip |
add IScope.flushCache()
9 files changed, 44 insertions, 4 deletions
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IScope.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IScope.java index 4967b61369c..da8426a358d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IScope.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IScope.java @@ -100,4 +100,10 @@ public interface IScope { * @return */ public boolean isFullyCached() throws DOMException; + + /** + * clear the name cache in this scope + * @throws DOMException + */ + public void flushCache() throws DOMException; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ProblemBinding.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ProblemBinding.java index 0a39913581a..6d26747098c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ProblemBinding.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ProblemBinding.java @@ -187,4 +187,7 @@ public class ProblemBinding implements IProblemBinding, IType, IScope { public boolean isSameType( IType type ) { return type == this; } + + public void flushCache() { + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CScope.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CScope.java index df0b528a200..8ceb7764f35 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CScope.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CScope.java @@ -198,4 +198,10 @@ public class CScope implements ICScope { } return null; } + + public void flushCache() { + bindings[0].clear(); + bindings[1].clear(); + isFullyCached = false; + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassInstanceScope.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassInstanceScope.java index 71f1380679e..b9b7d686474 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassInstanceScope.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassInstanceScope.java @@ -233,4 +233,10 @@ public class CPPClassInstanceScope implements ICPPClassScope { isFullyCached = false; } + + public void flushCache() { + if( bindings != null ) + bindings.clear(); + isFullyCached = false; + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassScope.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassScope.java index c0e6b14c441..ec679d65ddf 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassScope.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassScope.java @@ -263,4 +263,14 @@ public class CPPClassScope extends CPPScope implements ICPPClassScope { super.removeBinding( binding ); } } + + public void flushCache() { + constructorNames.clear(); + for( int i = constructorBindings.size() - 1; i >= 0; i-- ){ + IBinding binding = (IBinding) constructorBindings.keyAt(i); + if( !(binding instanceof CPPImplicitConstructor) ) + constructorBindings.remove( binding ); + } + super.flushCache(); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionScope.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionScope.java index 9bd94b65915..0d71c875056 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionScope.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionScope.java @@ -123,4 +123,9 @@ public class CPPFunctionScope extends CPPScope implements ICPPFunctionScope { } return null; } + + public void flushCache() { + labels.clear(); + super.flushCache(); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPNamespaceScope.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPNamespaceScope.java index b715dac6824..fe38fc84b8d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPNamespaceScope.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPNamespaceScope.java @@ -13,7 +13,6 @@ */ package org.eclipse.cdt.internal.core.dom.parser.cpp; -import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition; @@ -46,7 +45,7 @@ public class CPPNamespaceScope extends CPPScope implements ICPPNamespaceScope{ /* (non-Javadoc) * @see org.eclipse.cdt.core.dom.ast.cpp.ICPPScope#getScopeName() */ - public IASTName getScopeName() throws DOMException { + public IASTName getScopeName() { IASTNode node = getPhysicalNode(); if( node instanceof ICPPASTNamespaceDefinition ){ return ((ICPPASTNamespaceDefinition)node).getName(); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPScope.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPScope.java index 82b041e6b60..2127f86aa6e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPScope.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPScope.java @@ -173,4 +173,10 @@ abstract public class CPPScope implements ICPPScope{ public IBinding[] find(String name) throws DOMException { return CPPSemantics.findBindings( this, name, false ); } + + public void flushCache() { + isfull = false; + if( bindings != null ) + bindings.clear(); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateScope.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateScope.java index 5f46b1d0b4a..31a82407d29 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateScope.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateScope.java @@ -13,7 +13,6 @@ */ package org.eclipse.cdt.internal.core.dom.parser.cpp; -import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateDefinition; @@ -35,7 +34,7 @@ public class CPPTemplateScope extends CPPScope implements ICPPTemplateScope { /* (non-Javadoc) * @see org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateScope#getTemplateDefinition() */ - public ICPPTemplateDefinition getTemplateDefinition() throws DOMException { + public ICPPTemplateDefinition getTemplateDefinition() { // if( primaryDefinition == null ){ // //primaryDefinition = CPPTemplates.getTemplateDefinition( this ); // ICPPASTTemplateDeclaration template = (ICPPASTTemplateDeclaration) getPhysicalNode(); |