diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java index d516544c5ff..1d158660bc6 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java @@ -1400,7 +1400,7 @@ public class CVisitor { } else if( statement instanceof IASTDeclarationStatement ){ if( !visitDeclaration( ((IASTDeclarationStatement)statement).getDeclaration(), action ) ) return false; } else if( statement instanceof IASTExpressionStatement ){ - if( !visitExpression( ((IASTExpressionStatement)statement).getExpression(), action ) ) return false; + if( ((IASTExpressionStatement)statement).getExpression() != null && !visitExpression( ((IASTExpressionStatement)statement).getExpression(), action ) ) return false; } else if( statement instanceof IASTCaseStatement ){ if( !visitExpression( ((IASTCaseStatement)statement).getExpression(), action ) ) return false; } else if( statement instanceof IASTDoStatement ){ @@ -1478,7 +1478,7 @@ public class CVisitor { if( !visitName( ((IASTFieldReference)expression).getFieldName(), action ) ) return false; } else if( expression instanceof IASTFunctionCallExpression ){ if( !visitExpression( ((IASTFunctionCallExpression)expression).getFunctionNameExpression(), action ) ) return false; - if( !visitExpression( ((IASTFunctionCallExpression)expression).getParameterExpression(), action ) ) return false; + if( ((IASTFunctionCallExpression)expression).getParameterExpression() != null && !visitExpression( ((IASTFunctionCallExpression)expression).getParameterExpression(), action ) ) return false; } else if( expression instanceof IASTIdExpression ){ if( !visitName( ((IASTIdExpression)expression).getName(), action ) ) return false; } else if( expression instanceof IASTTypeIdExpression ){ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVisitor.java index f7318c1dfd8..4b0277d9289 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVisitor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVisitor.java @@ -858,7 +858,7 @@ public class CPPVisitor { if( declarator instanceof IASTArrayDeclarator ){ IASTArrayModifier [] mods = ((IASTArrayDeclarator) declarator).getArrayModifiers(); for( int i = 0; i < mods.length; i++ ){ - if( !visitExpression( mods[i].getConstantExpression(), action ) ) return false; + if( mods[i].getConstantExpression() != null && !visitExpression( mods[i].getConstantExpression(), action ) ) return false; } } @@ -971,7 +971,8 @@ public class CPPVisitor { if( !visitName( ((IASTFieldReference)expression).getFieldName(), action ) ) return false; } else if( expression instanceof IASTFunctionCallExpression ){ if( !visitExpression( ((IASTFunctionCallExpression)expression).getFunctionNameExpression(), action ) ) return false; - if( !visitExpression( ((IASTFunctionCallExpression)expression).getParameterExpression(), action ) ) return false; + if( ((IASTFunctionCallExpression)expression).getParameterExpression() != null ) + if( !visitExpression( ((IASTFunctionCallExpression)expression).getParameterExpression(), action ) ) return false; } else if( expression instanceof IASTIdExpression ){ if( !visitName( ((IASTIdExpression)expression).getName(), action ) ) return false; } else if( expression instanceof IASTTypeIdExpression ){ diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPPPopulateASTViewAction.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPPPopulateASTViewAction.java index 0d5f3157b01..cb66b8faab7 100644 --- a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPPPopulateASTViewAction.java +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPPPopulateASTViewAction.java @@ -179,7 +179,7 @@ public class CPPPopulateASTViewAction extends CPPBaseVisitorAction implements IP } private void mergeNode(ASTNode node) { - addRoot(node); // TODO Devin need to figure out how to merge these based on location + addRoot(node); if (node instanceof ASTObjectMacro) addRoot(((ASTObjectMacro)node).getName()); diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPopulateASTViewAction.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPopulateASTViewAction.java index 8740431b302..81065227e6e 100644 --- a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPopulateASTViewAction.java +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPopulateASTViewAction.java @@ -12,7 +12,6 @@ package org.eclipse.cdt.ui.tests.DOMAST; import org.eclipse.cdt.core.dom.ast.IASTArrayDeclarator; import org.eclipse.cdt.core.dom.ast.IASTArrayModifier; -import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression; import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier; import org.eclipse.cdt.core.dom.ast.IASTDeclaration; import org.eclipse.cdt.core.dom.ast.IASTDeclarator; @@ -22,7 +21,6 @@ import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration; import org.eclipse.cdt.core.dom.ast.IASTPointerOperator; -import org.eclipse.cdt.core.dom.ast.IASTPreprocessorIncludeStatement; import org.eclipse.cdt.core.dom.ast.IASTPreprocessorMacroDefinition; import org.eclipse.cdt.core.dom.ast.IASTProblem; import org.eclipse.cdt.core.dom.ast.IASTStatement; @@ -161,7 +159,7 @@ public class CPopulateASTViewAction extends CBaseVisitorAction implements IPopul } private void mergeNode(ASTNode node) { - addRoot(node); // TODO Devin need to figure out how to merge these based on location + addRoot(node); if (node instanceof ASTObjectMacro) addRoot(((ASTObjectMacro)node).getName()); diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/DOMAST.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/DOMAST.java index 7a53a29b66d..bb4d431b56c 100644 --- a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/DOMAST.java +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/DOMAST.java @@ -464,7 +464,7 @@ private static final String REFRESH_DOM_AST = "Refresh DOM AST"; //$NON-NLS-1 if (aPart instanceof CEditor && obj instanceof TreeObject) { String filename = ((TreeObject) obj).getFilename(); - if (filename.equals(TreeObject.BLANK_FILENAME)) + if (filename.equals(TreeObject.BLANK_STRING)) return; IResource r = ParserUtil.getResourceForFilename(filename); diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/TreeObject.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/TreeObject.java index 43ecfd0a532..19aedc57709 100644 --- a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/TreeObject.java +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/TreeObject.java @@ -26,7 +26,7 @@ import org.eclipse.core.runtime.IAdaptable; */ public class TreeObject implements IAdaptable { private static final String FILE_SEPARATOR = "\\"; - public static final String BLANK_FILENAME = ""; //$NON-NLS-1$ + public static final String BLANK_STRING = ""; //$NON-NLS-1$ private static final String IGCCAST_PREFIX = "IGCCAST"; //$NON-NLS-1$ private static final String IGNUAST_PREFIX = "IGNUAST"; //$NON-NLS-1$ private static final String IGPPAST_PREFIX = "IGPPAST"; //$NON-NLS-1$ @@ -65,7 +65,7 @@ public class TreeObject implements IAdaptable { } public String toString() { - if( node == null ) return BLANK_FILENAME; //$NON-NLS-1$ + if( node == null ) return BLANK_STRING; //$NON-NLS-1$ StringBuffer buffer = new StringBuffer(); Class[] classes = node.getClass().getInterfaces(); @@ -79,12 +79,14 @@ public class TreeObject implements IAdaptable { } if ( node instanceof IASTSimpleDeclaration ) { + String name = null; IASTDeclarator[] decltors = ((IASTSimpleDeclaration)node).getDeclarators(); if ( decltors.length > 0 ) { buffer.append(START_OF_LIST); for (int i=0; i 0 && location[0] instanceof IASTFileLocation ) return ((IASTFileLocation)location[0]).getFileName(); - return BLANK_FILENAME; //$NON-NLS-1$ + return BLANK_STRING; //$NON-NLS-1$ } public int getOffset() { diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/TreeParent.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/TreeParent.java index 5e768835de0..40b59f03e24 100644 --- a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/TreeParent.java +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/TreeParent.java @@ -14,6 +14,8 @@ import java.util.ArrayList; import java.util.Iterator; import org.eclipse.cdt.core.dom.ast.IASTNode; +import org.eclipse.cdt.internal.core.dom.parser.ASTNode; +import org.eclipse.cdt.internal.core.parser.scanner2.LocationMap; /** * @author dsteffle @@ -26,7 +28,30 @@ public class TreeParent extends TreeObject { children = new ArrayList(); } public void addChild(TreeObject child) { - children.add(child); + int index = 0; + for(int i=0; i