diff options
author | Markus Schorn | 2010-08-19 14:34:05 +0000 |
---|---|---|
committer | Markus Schorn | 2010-08-19 14:34:05 +0000 |
commit | 7a22acef4162400db3abdb25d8db45278f82c662 (patch) | |
tree | 454204cef2013a0e4dc31e92f94523fa3b5daa8d /core/org.eclipse.cdt.ui.tests/src/org | |
parent | 04b85fcd5b20fecfd58cfb46ccd1fb051c46d248 (diff) | |
download | org.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')
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; } |