[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] [FIXED] 72710 [Search] Field Reference incorrectly reported as variable ref
|
[FIXED] 72710 [Search] Field Reference incorrectly
reported as variable ref |
Here's a patch for 72710... although
there doesn't seem to be many test cases for this sort of bug.
Devin Steffler
IBM's Eclipse CDT
Ottawa (Palladium), Ontario, Canada
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java,v
retrieving revision 1.188
diff -u -r1.188 CompleteParseASTFactory.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java 5 Oct 2004 18:16:06 -0000 1.188
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java 6 Oct 2004 19:26:54 -0000
@@ -100,6 +100,7 @@
import org.eclipse.cdt.internal.core.parser.pst.TypeInfoProvider;
import org.eclipse.cdt.internal.core.parser.pst.UndefinedTemplateSymbol;
import org.eclipse.cdt.internal.core.parser.pst.ISymbolASTExtension.ExtensionException;
+import org.eclipse.cdt.internal.core.parser.token.AbstractToken;
import org.eclipse.cdt.internal.core.parser.token.TokenFactory;
import org.eclipse.cdt.internal.core.parser.util.TraceUtil;
@@ -3619,7 +3620,20 @@
}
else
{
- ASTExpression ownerExpression = expression.findOwnerExpressionForIDExpression( duple );
+ ASTExpression ownerExpression = null;
+
+ // fixes 72710
+ if ( duple instanceof AbstractToken && expression.getLHSExpression() != null ) {
+ if ( expression.getLHSExpression().getExpressionKind().isPostfixMemberReference() && !(((AbstractToken)duple).getNext().getType() == IToken.tSEMI) ) {
+ ASTExpression lhsExpression = (ASTExpression)expression.getLHSExpression();
+ ownerExpression = lhsExpression.findOwnerExpressionForIDExpression( duple );
+ }
+ }
+
+ if (ownerExpression == null){
+ ownerExpression = expression.findOwnerExpressionForIDExpression( duple );
+ }
+
if( ownerExpression == null ) return null;
if( ownerExpression.getExpressionKind().isPostfixMemberReference() )
{