[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] Solution to [Bug 43053] require reference cleanup for expressions
|
Core:
-Solution
to [Bug 43053] require reference cleanup for expressions
Added
purgeReferences() at the end of ASTExpression::acceptElement()
Hoda Amer
Staff Software Engineer
Rational Software - IBM Software Group
Index: parser/ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/ChangeLog,v
retrieving revision 1.144
diff -u -r1.144 ChangeLog
--- parser/ChangeLog 30 Sep 2003 18:03:15 -0000 1.144
+++ parser/ChangeLog 30 Sep 2003 18:34:00 -0000
@@ -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
Index: parser/org/eclipse/cdt/core/parser/ast/IASTExpression.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTExpression.java,v
retrieving revision 1.9
diff -u -r1.9 IASTExpression.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTExpression.java 23 Sep 2003 22:58:34 -0000 1.9
+++ parser/org/eclipse/cdt/core/parser/ast/IASTExpression.java 30 Sep 2003 18:34:01 -0000
@@ -141,5 +141,6 @@
public int evaluateExpression() throws ExpressionEvaluationException;
public void reconcileReferences() throws ASTNotImplementedException;
+ public void purgeReferences() throws ASTNotImplementedException;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTExpression.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTExpression.java,v
retrieving revision 1.4
diff -u -r1.4 ASTExpression.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTExpression.java 23 Sep 2003 22:58:34 -0000 1.4
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTExpression.java 30 Sep 2003 18:34:01 -0000
@@ -155,6 +155,15 @@
if( newDescriptor != null )
newDescriptor.acceptElement(requestor);
+
+ try
+ {
+ purgeReferences();
+ }
+ catch (ASTNotImplementedException e)
+ {
+ // will not get thrown
+ }
}
/* (non-Javadoc)
@@ -226,5 +235,28 @@
}
}
}
+ /* (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();
+ }
+ }
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTExpression.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTExpression.java,v
retrieving revision 1.4
diff -u -r1.4 ASTExpression.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTExpression.java 23 Sep 2003 22:58:34 -0000 1.4
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTExpression.java 30 Sep 2003 18:34:01 -0000
@@ -195,7 +195,13 @@
{
throw new ASTNotImplementedException();
}
-
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.parser.ast.IASTExpression#purgeReferences()
+ */
+ public void purgeReferences() throws ASTNotImplementedException
+ {
+ throw new ASTNotImplementedException();
+ }
}