Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Camelon2003-09-30 19:44:22 +0000
committerJohn Camelon2003-09-30 19:44:22 +0000
commit1a408fd23763bdf5836a830547c0a30866cdff92 (patch)
treebc89804e969626db56e566b59aab3bbb2e037a2d /core/org.eclipse.cdt.core/parser
parentc4640566cbae66ea996d904295a7eefae2ac6bf5 (diff)
downloadorg.eclipse.cdt-1a408fd23763bdf5836a830547c0a30866cdff92.tar.gz
org.eclipse.cdt-1a408fd23763bdf5836a830547c0a30866cdff92.tar.xz
org.eclipse.cdt-1a408fd23763bdf5836a830547c0a30866cdff92.zip
Patch for Hoda Amer
Core: -Solution to [Bug 43053] require reference cleanup for expressions Added purgeReferences() at the end of ASTExpression::acceptElement()
Diffstat (limited to 'core/org.eclipse.cdt.core/parser')
-rw-r--r--core/org.eclipse.cdt.core/parser/ChangeLog4
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTExpression.java1
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTExpression.java32
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTExpression.java8
4 files changed, 44 insertions, 1 deletions
diff --git a/core/org.eclipse.cdt.core/parser/ChangeLog b/core/org.eclipse.cdt.core/parser/ChangeLog
index a09e127f6a7..683ab7f81a0 100644
--- a/core/org.eclipse.cdt.core/parser/ChangeLog
+++ b/core/org.eclipse.cdt.core/parser/ChangeLog
@@ -1,3 +1,7 @@
+2003-09-30 Hoda Amer
+ -Solution to [Bug 43053] require reference cleanup for expressions
+ Added purgeReferences() at the end of ASTExpression::acceptElement()
+
2003-09-30 Andrew Niefer
PST changes for bug 43503 - parser needs to know the different between ambiguous functions
and no functions when no parameter information is provided
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTExpression.java
index 72d43e4804d..3359d1c1532 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTExpression.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTExpression.java
@@ -141,5 +141,6 @@ public interface IASTExpression extends ISourceElementCallbackDelegate
public int evaluateExpression() throws ExpressionEvaluationException;
public void reconcileReferences() throws ASTNotImplementedException;
+ public void purgeReferences() throws ASTNotImplementedException;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTExpression.java
index 1c04eaf0ce1..ca1cdb277f7 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTExpression.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTExpression.java
@@ -155,6 +155,15 @@ public class ASTExpression implements IASTExpression
if( newDescriptor != null )
newDescriptor.acceptElement(requestor);
+
+ try
+ {
+ purgeReferences();
+ }
+ catch (ASTNotImplementedException e)
+ {
+ // will not get thrown
+ }
}
/* (non-Javadoc)
@@ -226,5 +235,28 @@ public class ASTExpression implements IASTExpression
}
}
}
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.parser.ast.IASTExpression#purgeReferences()
+ */
+ public void purgeReferences() throws ASTNotImplementedException
+ {
+ if( lhs != null )
+ lhs.purgeReferences();
+ if( rhs != null )
+ rhs.purgeReferences();
+ if( thirdExpression != null )
+ thirdExpression.purgeReferences();
+
+ purgeSubExpression((ASTExpression)lhs);
+ purgeSubExpression((ASTExpression)rhs);
+ purgeSubExpression((ASTExpression)thirdExpression);
+ }
+ protected void purgeSubExpression(ASTExpression subExpression)
+ {
+ if( subExpression != null && subExpression.getReferences() != null )
+ {
+ subExpression.getReferences().clear();
+ }
+ }
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTExpression.java
index b4e491be5f1..d6b155b5c02 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTExpression.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTExpression.java
@@ -195,7 +195,13 @@ public class ASTExpression implements IASTExpression {
{
throw new ASTNotImplementedException();
}
-
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.parser.ast.IASTExpression#purgeReferences()
+ */
+ public void purgeReferences() throws ASTNotImplementedException
+ {
+ throw new ASTNotImplementedException();
+ }
}

Back to the top