Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Schorn2010-08-19 14:34:05 +0000
committerMarkus Schorn2010-08-19 14:34:05 +0000
commit7a22acef4162400db3abdb25d8db45278f82c662 (patch)
tree454204cef2013a0e4dc31e92f94523fa3b5daa8d /core/org.eclipse.cdt.ui.tests/src/org
parent04b85fcd5b20fecfd58cfb46ccd1fb051c46d248 (diff)
downloadorg.eclipse.cdt-7a22acef4162400db3abdb25d8db45278f82c662.tar.gz
org.eclipse.cdt-7a22acef4162400db3abdb25d8db45278f82c662.tar.xz
org.eclipse.cdt-7a22acef4162400db3abdb25d8db45278f82c662.zip
Bug 316307: [C++0x] Syntax for lambda expressions.
Diffstat (limited to 'core/org.eclipse.cdt.ui.tests/src/org')
-rw-r--r--core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPPPopulateASTViewAction.java227
-rw-r--r--core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/DOMASTNodeLeaf.java29
2 files changed, 26 insertions, 230 deletions
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 7be0018be2f..c196ea724b2 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
@@ -12,28 +12,15 @@ package org.eclipse.cdt.ui.tests.DOMAST;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
-import org.eclipse.cdt.core.dom.ast.IASTEnumerationSpecifier.IASTEnumerator;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTInitializer;
+import org.eclipse.cdt.core.dom.ast.ASTGenericVisitor;
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.IASTPreprocessorStatement;
import org.eclipse.cdt.core.dom.ast.IASTProblem;
import org.eclipse.cdt.core.dom.ast.IASTProblemHolder;
-import org.eclipse.cdt.core.dom.ast.IASTStatement;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.ast.IASTTypeId;
-import org.eclipse.cdt.core.dom.ast.cpp.CPPASTVisitor;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier.ICPPASTBaseSpecifier;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter;
import org.eclipse.cdt.core.parser.util.ArrayUtil;
import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
@@ -41,29 +28,16 @@ import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
/**
* @author dsteffle
*/
-public class CPPPopulateASTViewAction extends CPPASTVisitor implements IPopulateDOMASTAction {
+public class CPPPopulateASTViewAction extends ASTGenericVisitor implements IPopulateDOMASTAction {
private static final int INITIAL_PROBLEM_SIZE = 4;
- {
- shouldVisitNames = true;
- shouldVisitDeclarations = true;
- shouldVisitInitializers = true;
- shouldVisitParameterDeclarations = true;
- shouldVisitDeclarators = true;
- shouldVisitDeclSpecifiers = true;
- shouldVisitExpressions = true;
- shouldVisitStatements = true;
- shouldVisitTypeIds = true;
- shouldVisitEnumerators = true;
- shouldVisitBaseSpecifiers = true;
- shouldVisitNamespaces = true;
- shouldVisitTemplateParameters= true;
- }
DOMASTNodeParent root = null;
IProgressMonitor monitor = null;
IASTProblem[] astProblems = new IASTProblem[INITIAL_PROBLEM_SIZE];
public CPPPopulateASTViewAction(IASTTranslationUnit tu, IProgressMonitor monitor) {
+ super(true);
+ shouldVisitTranslationUnit= false;
root = new DOMASTNodeParent(tu);
this.monitor = monitor;
}
@@ -131,199 +105,22 @@ public class CPPPopulateASTViewAction extends CPPASTVisitor implements IPopulate
return tree;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.CPPBaseVisitorAction#processDeclaration(org.eclipse.cdt.core.dom.ast.IASTDeclaration)
- */
- @Override
- public int visit(IASTDeclaration declaration) {
- DOMASTNodeLeaf temp = addRoot(declaration);
- if (temp == null)
- return PROCESS_ABORT;
- else if (temp instanceof DOMASTNodeLeafContinue)
- return PROCESS_CONTINUE;
- else
- return PROCESS_CONTINUE;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.CPPBaseVisitorAction#processDeclarator(org.eclipse.cdt.core.dom.ast.IASTDeclarator)
- */
- @Override
- public int visit(IASTDeclarator declarator) {
- DOMASTNodeLeaf temp = addRoot(declarator);
-
- IASTPointerOperator[] ops = declarator.getPointerOperators();
- for (IASTPointerOperator op : ops)
- addRoot(op);
-
- if (temp == null)
- return PROCESS_ABORT;
- else if (temp instanceof DOMASTNodeLeafContinue)
- return PROCESS_CONTINUE;
- else
- return PROCESS_CONTINUE;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.CPPBaseVisitorAction#processBaseSpecifier(org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier.ICPPASTBaseSpecifier)
- */
@Override
- public int visit(ICPPASTBaseSpecifier specifier) {
- DOMASTNodeLeaf temp = addRoot(specifier);
- if (temp == null)
+ public int genericVisit(IASTNode declaration) {
+ if (addRoot(declaration) == null)
return PROCESS_ABORT;
- else if (temp instanceof DOMASTNodeLeafContinue)
- return PROCESS_CONTINUE;
- else
- return PROCESS_CONTINUE;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.CPPBaseVisitorAction#processDeclSpecifier(org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier)
- */
- @Override
- public int visit(IASTDeclSpecifier declSpec) {
- DOMASTNodeLeaf temp = addRoot(declSpec);
- if (temp == null)
- return PROCESS_ABORT;
- else if (temp instanceof DOMASTNodeLeafContinue)
- return PROCESS_CONTINUE;
- else
- return PROCESS_CONTINUE;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.CPPBaseVisitorAction#processEnumerator(org.eclipse.cdt.core.dom.ast.IASTEnumerationSpecifier.IASTEnumerator)
- */
- @Override
- public int visit(IASTEnumerator enumerator) {
- DOMASTNodeLeaf temp = addRoot(enumerator);
- if (temp == null)
- return PROCESS_ABORT;
- else if (temp instanceof DOMASTNodeLeafContinue)
- return PROCESS_CONTINUE;
- else
- return PROCESS_CONTINUE;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.CPPBaseVisitorAction#processExpression(org.eclipse.cdt.core.dom.ast.IASTExpression)
- */
- @Override
- public int visit(IASTExpression expression) {
- DOMASTNodeLeaf temp = addRoot(expression);
- if (temp == null)
- return PROCESS_ABORT;
- else if (temp instanceof DOMASTNodeLeafContinue)
- return PROCESS_CONTINUE;
- else
- return PROCESS_CONTINUE;
+
+ return PROCESS_CONTINUE;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.CPPBaseVisitorAction#processInitializer(org.eclipse.cdt.core.dom.ast.IASTInitializer)
- */
- @Override
- public int visit(IASTInitializer initializer) {
- DOMASTNodeLeaf temp = addRoot(initializer);
- if (temp == null)
- return PROCESS_ABORT;
- else if (temp instanceof DOMASTNodeLeafContinue)
- return PROCESS_CONTINUE;
- else
- return PROCESS_CONTINUE;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.CPPBaseVisitorAction#processName(org.eclipse.cdt.core.dom.ast.IASTName)
- */
@Override
public int visit(IASTName name) {
- DOMASTNodeLeaf temp = null;
- if (name.toString() != null)
- temp = addRoot(name);
- else
- return PROCESS_CONTINUE;
-
- if (temp == null)
- return PROCESS_ABORT;
- else if (temp instanceof DOMASTNodeLeafContinue)
- return PROCESS_CONTINUE;
- else
- return PROCESS_CONTINUE;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.CPPBaseVisitorAction#processNamespace(org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition)
- */
- @Override
- public int visit(ICPPASTNamespaceDefinition namespace) {
- DOMASTNodeLeaf temp = addRoot(namespace);
- if (temp == null)
- return PROCESS_ABORT;
- else if (temp instanceof DOMASTNodeLeafContinue)
- return PROCESS_CONTINUE;
- else
- return PROCESS_CONTINUE;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.CPPBaseVisitorAction#processParameterDeclaration(org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration)
- */
- @Override
- public int visit(
- IASTParameterDeclaration parameterDeclaration) {
- DOMASTNodeLeaf temp = addRoot(parameterDeclaration);
- if (temp == null)
- return PROCESS_ABORT;
- else if (temp instanceof DOMASTNodeLeafContinue)
- return PROCESS_CONTINUE;
- else
- return PROCESS_CONTINUE;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.CPPBaseVisitorAction#processStatement(org.eclipse.cdt.core.dom.ast.IASTStatement)
- */
- @Override
- public int visit(IASTStatement statement) {
- DOMASTNodeLeaf temp = addRoot(statement);
- if (temp == null)
- return PROCESS_ABORT;
- else if (temp instanceof DOMASTNodeLeafContinue)
- return PROCESS_CONTINUE;
- else
- return PROCESS_CONTINUE;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.CPPBaseVisitorAction#processTypeId(org.eclipse.cdt.core.dom.ast.IASTTypeId)
- */
- @Override
- public int visit(IASTTypeId typeId) {
- DOMASTNodeLeaf temp = addRoot(typeId);
- if (temp == null)
- return PROCESS_ABORT;
- else if (temp instanceof DOMASTNodeLeafContinue)
- return PROCESS_CONTINUE;
- else
- return PROCESS_CONTINUE;
+ if (name.toString() != null) {
+ return genericVisit(name);
+ }
+ return PROCESS_CONTINUE;
}
- /*
- * (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ast.cpp.CPPASTVisitor#visit(org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter)
- */
- @Override
- public int visit(ICPPASTTemplateParameter templateParameter) {
- DOMASTNodeLeaf temp = addRoot(templateParameter);
- if (temp == null)
- return PROCESS_ABORT;
- else if (temp instanceof DOMASTNodeLeafContinue)
- return PROCESS_CONTINUE;
- else
- return PROCESS_CONTINUE;
- }
private DOMASTNodeLeaf mergeNode(ASTNode node) {
DOMASTNodeLeaf leaf = addRoot(node);
diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/DOMASTNodeLeaf.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/DOMASTNodeLeaf.java
index 36fe860970d..864c11b0b77 100644
--- a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/DOMASTNodeLeaf.java
+++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/DOMASTNodeLeaf.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -97,7 +97,7 @@ public class DOMASTNodeLeaf implements IAdaptable {
public static final int FLAG_INCLUDE_STATEMENTS = 1<<2;
static {
ignoreInterfaces.addAll(Arrays.asList(new String[] {
- "IASTCompletionContext", "IASTNode"
+ "IASTCompletionContext", "ICPPASTCompletionContext", "IASTNode"
}));
}
public DOMASTNodeLeaf(IASTNode node) {
@@ -332,8 +332,7 @@ public class DOMASTNodeLeaf implements IAdaptable {
return name;
}
- @SuppressWarnings("unchecked")
- public Object getAdapter(Class key) {
+ public Object getAdapter(@SuppressWarnings("rawtypes") Class key) {
if (key == IPropertySource.class)
return new ASTPropertySource(getNode());
@@ -424,18 +423,18 @@ public class DOMASTNodeLeaf implements IAdaptable {
if (node instanceof IASTName) {
IPropertyDescriptor[] desc = getPropertyDescriptors(((IASTName)node).resolveBinding());
if (desc != null)
- for(int i=0; i<desc.length; i++)
- descriptors = (IPropertyDescriptor[])ArrayUtil.append(IPropertyDescriptor.class, descriptors, desc[i]);
+ for (IPropertyDescriptor element : desc)
+ descriptors = (IPropertyDescriptor[])ArrayUtil.append(IPropertyDescriptor.class, descriptors, element);
desc = getPropertyDescriptors(node);
if (desc != null)
- for(int i=0; i<desc.length; i++)
- descriptors = (IPropertyDescriptor[])ArrayUtil.append(IPropertyDescriptor.class, descriptors, desc[i]);
+ for (IPropertyDescriptor element : desc)
+ descriptors = (IPropertyDescriptor[])ArrayUtil.append(IPropertyDescriptor.class, descriptors, element);
} else {
IPropertyDescriptor[] desc = getPropertyDescriptors(node);
if (desc != null)
- for(int i=0; i<desc.length; i++)
- descriptors = (IPropertyDescriptor[])ArrayUtil.append(IPropertyDescriptor.class, descriptors, desc[i]);
+ for (IPropertyDescriptor element : desc)
+ descriptors = (IPropertyDescriptor[])ArrayUtil.append(IPropertyDescriptor.class, descriptors, element);
}
return (IPropertyDescriptor[])ArrayUtil.trim(IPropertyDescriptor.class, descriptors);
@@ -447,8 +446,8 @@ public class DOMASTNodeLeaf implements IAdaptable {
Class<?> objClass = obj.getClass();
Class<?>[] interfaces = objClass.getInterfaces();
- for(int i=0; i<interfaces.length; i++) {
- Method[] methods = interfaces[i].getMethods();
+ for (Class<?> interface1 : interfaces) {
+ Method[] methods = interface1.getMethods();
for(int j=0; j<methods.length; j++) {
// multiple interfaces can have the same method, so don't duplicate that method in the property view
// which causes an ArrayIndexOutOfBoundsException elsewhere
@@ -478,14 +477,14 @@ public class DOMASTNodeLeaf implements IAdaptable {
private boolean alreadyEncountered(Method method, IPropertyDescriptor[] desc) {
StringBuffer name = null;
- for(int i=0; i<desc.length; i++) {
- if (desc[i] == null) // reached the end of the array
+ for (IPropertyDescriptor element : desc) {
+ if (element == null) // reached the end of the array
break;
name = new StringBuffer();
name.append(method.getName());
name.append(EMPTY_PARAMETER);
- if (name.toString().equals(desc[i].getDisplayName()))
+ if (name.toString().equals(element.getDisplayName()))
return true;
}

Back to the top