mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Merge remote-tracking branch 'cdt/master' into sd90
This commit is contained in:
commit
5ac21f1de1
12 changed files with 294 additions and 207 deletions
|
@ -12,8 +12,6 @@
|
|||
*******************************************************************************/
|
||||
package org.eclipse.cdt.internal.core.dom.rewrite.astwriter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.core.dom.ast.IASTASMDeclaration;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
|
||||
|
@ -32,6 +30,8 @@ import org.eclipse.cdt.internal.core.dom.rewrite.changegenerator.ChangeGenerator
|
|||
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.ASTCommenter;
|
||||
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* ASTWriter main class. Generates source code from <code>IASTNode</code>.
|
||||
* Uses a {@link ChangeGeneratorWriterVisitor} to generate the code for the given nodes.
|
||||
|
@ -173,7 +173,7 @@ public class ASTWriter {
|
|||
if (isFunctionDeclaration(node1) != isFunctionDeclaration(node2)) {
|
||||
return true;
|
||||
}
|
||||
if (requiresTrailingBlankLine(node1)) {
|
||||
if (node2 != null && requiresTrailingBlankLine(node1)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -13,8 +13,6 @@
|
|||
*******************************************************************************/
|
||||
package org.eclipse.cdt.internal.core.dom.rewrite.astwriter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTArrayModifier;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTComment;
|
||||
|
@ -36,6 +34,8 @@ import org.eclipse.cdt.core.dom.ast.gnu.IGNUASTCompoundStatementExpression;
|
|||
import org.eclipse.cdt.internal.core.dom.rewrite.ASTLiteralNode;
|
||||
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Visits all nodes, prints leading comments and handles macro expansions. The
|
||||
* source code generation is delegated to severals {@code NodeWriter}s.
|
||||
|
|
|
@ -115,11 +115,11 @@ public class StatementWriter extends NodeWriter {
|
|||
writeContinueStatement((IASTContinueStatement)statement);
|
||||
// usually newLine
|
||||
} else if (statement instanceof IASTCompoundStatement) {
|
||||
writeCompoundStatement((IASTCompoundStatement) statement);
|
||||
if (compoundNoNewLine) {
|
||||
newLine = false;
|
||||
compoundNoNewLine = false;
|
||||
}
|
||||
writeCompoundStatement((IASTCompoundStatement) statement);
|
||||
} else if (statement instanceof IASTBreakStatement) {
|
||||
writeBreakStatement((IASTBreakStatement) statement);
|
||||
// usually newLine
|
||||
|
@ -396,7 +396,7 @@ public class StatementWriter extends NodeWriter {
|
|||
return compoundStatement.getStatements();
|
||||
}
|
||||
|
||||
// TODO(sprigogin): Rename second parameter
|
||||
// TODO(sprigogin): Invert and rename second parameter
|
||||
protected void writeBodyStatement(IASTStatement statement, boolean isDoStatement) {
|
||||
if (statement instanceof IASTCompoundStatement) {
|
||||
//TODO hsr existiert noch eine methode
|
||||
|
@ -417,7 +417,7 @@ public class StatementWriter extends NodeWriter {
|
|||
}
|
||||
|
||||
/**
|
||||
* Write no new Line after the next compound statement
|
||||
* Write no new line after the next compound statement
|
||||
*/
|
||||
protected void nextCompoundNoNewLine() {
|
||||
compoundNoNewLine = true;
|
||||
|
|
|
@ -48,6 +48,47 @@ import org.eclipse.cdt.internal.ui.refactoring.utils.VisibilityEnum;
|
|||
* @author Mirko Stocker
|
||||
*/
|
||||
public class ClassMemberInserter {
|
||||
public static class InsertionInfo {
|
||||
private final IASTNode parentNode;
|
||||
/**
|
||||
* The node before which the new node should be inserted. A null value indicates insertion
|
||||
* to the end of parentNode
|
||||
*/
|
||||
private IASTNode insertBeforeNode; //
|
||||
/** Visibility label to insert before the new node or null. */
|
||||
private ICPPASTVisibilityLabel prologue;
|
||||
/** Visibility label to insert after the new node or null. */
|
||||
private ICPPASTVisibilityLabel epilogue;
|
||||
|
||||
public InsertionInfo(IASTNode parentNode, IASTNode insertBeforeNode) {
|
||||
this.parentNode = parentNode;
|
||||
this.insertBeforeNode = insertBeforeNode;
|
||||
}
|
||||
|
||||
public InsertionInfo(IASTNode parentNode) {
|
||||
this(parentNode, null);
|
||||
}
|
||||
|
||||
public IASTNode getParentNode() {
|
||||
return parentNode;
|
||||
}
|
||||
|
||||
public IASTNode getInsertBeforeNode() {
|
||||
return insertBeforeNode;
|
||||
}
|
||||
|
||||
public ICPPASTVisibilityLabel getPrologue() {
|
||||
return prologue;
|
||||
}
|
||||
|
||||
public ICPPASTVisibilityLabel getEpilogue() {
|
||||
return epilogue;
|
||||
}
|
||||
}
|
||||
|
||||
// Not instantiatable. All methods are static.
|
||||
private ClassMemberInserter() {
|
||||
}
|
||||
|
||||
public static void createChange(ICPPASTCompositeTypeSpecifier classNode,
|
||||
VisibilityEnum visibility, IASTNode nodeToAdd, boolean isField,
|
||||
|
@ -58,7 +99,23 @@ public class ClassMemberInserter {
|
|||
public static void createChange(ICPPASTCompositeTypeSpecifier classNode,
|
||||
VisibilityEnum visibility, List<IASTNode> nodesToAdd, boolean isField,
|
||||
ModificationCollector collector) {
|
||||
InsertionInfo info = findInsertionPoint(classNode, visibility, isField);
|
||||
nodesToAdd = new ArrayList<IASTNode>(nodesToAdd);
|
||||
if (info.getPrologue() != null)
|
||||
nodesToAdd.add(0, info.getPrologue());
|
||||
if (info.getEpilogue() != null)
|
||||
nodesToAdd.add(info.getEpilogue());
|
||||
|
||||
ASTRewrite rewrite = collector.rewriterForTranslationUnit(classNode.getTranslationUnit());
|
||||
for (IASTNode node : nodesToAdd) {
|
||||
rewrite.insertBefore(info.getParentNode(), info.getInsertBeforeNode(), node,
|
||||
createEditDescription(classNode));
|
||||
}
|
||||
}
|
||||
|
||||
public static InsertionInfo findInsertionPoint(ICPPASTCompositeTypeSpecifier classNode,
|
||||
VisibilityEnum visibility, boolean isField) {
|
||||
InsertionInfo info = new InsertionInfo(classNode);
|
||||
VisibilityEnum defaultVisibility = classNode.getKey() == IASTCompositeTypeSpecifier.k_struct ?
|
||||
VisibilityEnum.v_public : VisibilityEnum.v_private;
|
||||
VisibilityEnum currentVisibility = defaultVisibility;
|
||||
|
@ -105,24 +162,19 @@ public class ClassMemberInserter {
|
|||
if (index < 0)
|
||||
index = lastPrecedingVisibilityIndex;
|
||||
index++;
|
||||
IASTNode nextNode = index < members.length ? members[index] : null;
|
||||
if (index < members.length)
|
||||
info.insertBeforeNode = members[index];
|
||||
|
||||
if (lastMatchingVisibilityIndex < 0 &&
|
||||
!(index == 0 && classNode.getKey() == IASTCompositeTypeSpecifier.k_struct && visibility == defaultVisibility)) {
|
||||
nodesToAdd.add(0, new CPPASTVisibilityLabel(visibility.getVisibilityLabelValue()));
|
||||
if (index == 0 && nextNode != null && !(nextNode instanceof ICPPASTVisibilityLabel)) {
|
||||
nodesToAdd.add(new CPPASTVisibilityLabel(defaultVisibility.getVisibilityLabelValue()));
|
||||
!(index == 0 && classNode.getKey() == IASTCompositeTypeSpecifier.k_struct &&
|
||||
visibility == defaultVisibility)) {
|
||||
info.prologue = new CPPASTVisibilityLabel(visibility.getVisibilityLabelValue());
|
||||
if (index == 0 && info.insertBeforeNode != null &&
|
||||
!(info.insertBeforeNode instanceof ICPPASTVisibilityLabel)) {
|
||||
info.epilogue = new CPPASTVisibilityLabel(defaultVisibility.getVisibilityLabelValue());
|
||||
}
|
||||
}
|
||||
|
||||
ASTRewrite rewrite = collector.rewriterForTranslationUnit(classNode.getTranslationUnit());
|
||||
for (IASTNode node : nodesToAdd) {
|
||||
rewrite.insertBefore(classNode, nextNode, node, createEditDescription(classNode));
|
||||
}
|
||||
}
|
||||
|
||||
// Not instantiatable. All methods are static.
|
||||
private ClassMemberInserter() {
|
||||
return info;
|
||||
}
|
||||
|
||||
private static TextEditGroup createEditDescription(ICPPASTCompositeTypeSpecifier classNode) {
|
||||
|
|
|
@ -7,10 +7,10 @@
|
|||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Institute for Software - initial API and implementation
|
||||
* Institute for Software - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.internal.ui.refactoring;
|
||||
|
||||
public interface EqualityChecker<T> {
|
||||
boolean isEquals(T object1, T object2);
|
||||
boolean isEqual(T object1, T object2);
|
||||
}
|
||||
|
|
|
@ -26,8 +26,8 @@ import org.eclipse.cdt.internal.core.dom.parser.ASTInternal;
|
|||
import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalBinding;
|
||||
|
||||
/**
|
||||
* Represents a function or method and adds some useful helper methods to
|
||||
* determine if methods are in the same class.
|
||||
* Represents a function or method and adds some useful helper methods to determine
|
||||
* if two methods are in the same class.
|
||||
*/
|
||||
public class MethodContext {
|
||||
public enum ContextType { NONE, FUNCTION, METHOD }
|
||||
|
|
|
@ -38,8 +38,8 @@ public class ExtractFunctionInformation {
|
|||
private boolean virtual;
|
||||
|
||||
/**
|
||||
* Returns the function declarator of the method / function from were the statements
|
||||
* are extacted from.
|
||||
* Returns the function declarator of the method or function from were the statements
|
||||
* are extracted from.
|
||||
* @return the function declarator or null
|
||||
*/
|
||||
public ICPPASTFunctionDeclarator getDeclarator() {
|
||||
|
|
|
@ -62,7 +62,7 @@ public class ExtractFunctionInputPage extends UserInputWizardPage {
|
|||
private Text textField;
|
||||
private boolean firstTime;
|
||||
private CSourceViewer signaturePreview;
|
||||
private Document signaturePreviewDocument;
|
||||
private final Document signaturePreviewDocument;
|
||||
private IDialogSettings settings;
|
||||
|
||||
private static final String DESCRIPTION = Messages.ExtractFunctionInputPage_description;
|
||||
|
|
|
@ -108,6 +108,7 @@ import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.ASTWriterVisitor;
|
|||
import org.eclipse.cdt.internal.ui.refactoring.CRefactoring;
|
||||
import org.eclipse.cdt.internal.ui.refactoring.CRefactoringDescriptor;
|
||||
import org.eclipse.cdt.internal.ui.refactoring.ClassMemberInserter;
|
||||
import org.eclipse.cdt.internal.ui.refactoring.ClassMemberInserter.InsertionInfo;
|
||||
import org.eclipse.cdt.internal.ui.refactoring.Container;
|
||||
import org.eclipse.cdt.internal.ui.refactoring.MethodContext;
|
||||
import org.eclipse.cdt.internal.ui.refactoring.MethodContext.ContextType;
|
||||
|
@ -379,9 +380,10 @@ public class ExtractFunctionRefactoring extends CRefactoring {
|
|||
}
|
||||
|
||||
private void createMethodDefinition(final IASTName methodName, MethodContext context,
|
||||
IASTNode firstNode, ModificationCollector collector) {
|
||||
IASTFunctionDefinition node = CPPVisitor.findAncestorWithType(firstNode, IASTFunctionDefinition.class);
|
||||
if (node != null) {
|
||||
IASTNode firstExtractedNode, ModificationCollector collector) {
|
||||
IASTFunctionDefinition functionToExtractFrom =
|
||||
CPPVisitor.findAncestorWithType(firstExtractedNode, IASTFunctionDefinition.class);
|
||||
if (functionToExtractFrom != null) {
|
||||
String title;
|
||||
if (context.getType() == MethodContext.ContextType.METHOD) {
|
||||
title = Messages.ExtractFunctionRefactoring_CreateMethodDef;
|
||||
|
@ -389,8 +391,8 @@ public class ExtractFunctionRefactoring extends CRefactoring {
|
|||
title = Messages.ExtractFunctionRefactoring_CreateFunctionDef;
|
||||
}
|
||||
|
||||
ASTRewrite rewriter = collector.rewriterForTranslationUnit(node.getTranslationUnit());
|
||||
addMethod(methodName, context, rewriter, node, new TextEditGroup(title));
|
||||
ASTRewrite rewriter = collector.rewriterForTranslationUnit(functionToExtractFrom.getTranslationUnit());
|
||||
addMethod(methodName, context, rewriter, functionToExtractFrom, new TextEditGroup(title));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -518,7 +520,7 @@ public class ExtractFunctionRefactoring extends CRefactoring {
|
|||
IASTNode trailNode = trail.get(pos);
|
||||
trailPos.setObject(Integer.valueOf(pos + 1));
|
||||
|
||||
if (equalityChecker.isEquals(trailNode, node)) {
|
||||
if (equalityChecker.isEqual(trailNode, node)) {
|
||||
if (node instanceof ICPPASTQualifiedName || node instanceof IASTNamedTypeSpecifier) {
|
||||
return PROCESS_SKIP;
|
||||
} else {
|
||||
|
@ -563,7 +565,7 @@ public class ExtractFunctionRefactoring extends CRefactoring {
|
|||
IASTParameterDeclaration newParameter = declarator.getParameters()[i];
|
||||
|
||||
// If not the same break;
|
||||
if (!(equalityChecker.isEquals(origParameter.getDeclSpecifier(),
|
||||
if (!(equalityChecker.isEqual(origParameter.getDeclSpecifier(),
|
||||
newParameter.getDeclSpecifier()) &&
|
||||
ASTHelper.samePointers(origParameter.getDeclarator().getPointerOperators(),
|
||||
newParameter.getDeclarator().getPointerOperators(),
|
||||
|
@ -584,7 +586,7 @@ public class ExtractFunctionRefactoring extends CRefactoring {
|
|||
}
|
||||
|
||||
private void addMethod(IASTName methodName, MethodContext context, ASTRewrite rewrite,
|
||||
IASTNode insertPoint, TextEditGroup group) {
|
||||
IASTNode functionToExtractFrom, TextEditGroup group) {
|
||||
ICPPASTQualifiedName qname = new CPPASTQualifiedName();
|
||||
if (context.getType() == ContextType.METHOD) {
|
||||
if (context.getMethodQName() != null) {
|
||||
|
@ -611,7 +613,8 @@ public class ExtractFunctionRefactoring extends CRefactoring {
|
|||
func.setBody(compound);
|
||||
|
||||
ASTRewrite subRewrite;
|
||||
IASTNode parent = insertPoint.getParent();
|
||||
IASTNode parent = functionToExtractFrom.getParent();
|
||||
IASTNode nodeToInsert = func;
|
||||
if (parent instanceof ICPPASTTemplateDeclaration) {
|
||||
ICPPASTTemplateDeclaration parentTemplate = (ICPPASTTemplateDeclaration) parent;
|
||||
CPPASTTemplateDeclaration templateDeclaration = new CPPASTTemplateDeclaration();
|
||||
|
@ -621,10 +624,33 @@ public class ExtractFunctionRefactoring extends CRefactoring {
|
|||
templateDeclaration.addTemplateParameter(param.copy(CopyStyle.withLocations));
|
||||
}
|
||||
|
||||
functionToExtractFrom = parentTemplate;
|
||||
templateDeclaration.setDeclaration(func);
|
||||
subRewrite = rewrite.insertBefore(parent.getParent(), parent, templateDeclaration, group);
|
||||
nodeToInsert = templateDeclaration;
|
||||
parent = parent.getParent();
|
||||
}
|
||||
|
||||
InsertionInfo insertion;
|
||||
if (parent instanceof ICPPASTCompositeTypeSpecifier) {
|
||||
// Inserting into a class declaration
|
||||
insertion = ClassMemberInserter.findInsertionPoint((ICPPASTCompositeTypeSpecifier) parent,
|
||||
info.getVisibility(), false);
|
||||
} else {
|
||||
subRewrite = rewrite.insertBefore(parent, insertPoint, func, group);
|
||||
// Inserting into a translation unit or a namespace.
|
||||
// TODO(sprigogin): Use insertBeforeNode instead of functionToExtractFrom when creating InsertionInfo
|
||||
// IASTNode insertBeforeNode = info.getMethodContext().getType() == ContextType.METHOD ?
|
||||
// null : functionToExtractFrom;
|
||||
insertion = new InsertionInfo(parent, functionToExtractFrom);
|
||||
}
|
||||
if (insertion.getPrologue() != null) {
|
||||
rewrite.insertBefore(insertion.getParentNode(),
|
||||
insertion.getInsertBeforeNode(), insertion.getPrologue(), group);
|
||||
}
|
||||
subRewrite = rewrite.insertBefore(insertion.getParentNode(),
|
||||
insertion.getInsertBeforeNode(), nodeToInsert, group);
|
||||
if (insertion.getEpilogue() != null) {
|
||||
rewrite.insertBefore(insertion.getParentNode(),
|
||||
insertion.getInsertBeforeNode(), insertion.getEpilogue(), group);
|
||||
}
|
||||
|
||||
extractor.constructMethodBody(compound, container.getNodesToWrite(),
|
||||
|
|
|
@ -22,7 +22,7 @@ ExtractFunctionRefactoring_CreateFunctionDef=Create Function Definition
|
|||
ExtractFunctionRefactoring_CreateMethodCall=Create Method Call
|
||||
ExtractFunctionRefactoring_CreateFunctionCall=Create Function Call
|
||||
ExtractFunctionRefactoring_Error_Return=Extracting return statements is not supported
|
||||
ExtractFunctionRefactoring_Error_Continue=Extracting cotinue statements without the surrounding loop is not possible. Please adjust your selection.
|
||||
ExtractFunctionRefactoring_Error_Continue=Extracting continue statements without the surrounding loop is not possible. Please adjust your selection.
|
||||
ExtractFunctionRefactoring_Error_Break=Extracting break statements without the surrounding loop is not possible. Please adjust your selection.
|
||||
ExtractFunctionInputPage_description=Enter new method name and specify the method's visibility
|
||||
ExtractFunctionInputPage_access_modifier=&Access modifier:
|
||||
|
@ -34,7 +34,7 @@ ExtractFunctionInputPage_label_text=Function &name:
|
|||
ExtractFunctionInputPage_parameters=&Parameters:
|
||||
ExtractFunctionInputPage_validation_empty_function_name=Provide a method name
|
||||
ExtractFunctionInputPage_validation_empty_parameter_name=Parameter names cannot be empty
|
||||
ExtractFunctionInputPage_duplicates_none=&Replace additional occurrences of statements with method
|
||||
ExtractFunctionInputPage_duplicates_single=&Replace 1 additional occurrence of statements with method
|
||||
ExtractFunctionInputPage_duplicates_multi=&Replace {0} additional occurrences of statements with method
|
||||
ExtractFunctionInputPage_duplicates_none=&Replace additional occurrences of statements with a function call
|
||||
ExtractFunctionInputPage_duplicates_single=&Replace 1 additional occurrence of statements with a function call
|
||||
ExtractFunctionInputPage_duplicates_multi=&Replace {0} additional occurrences of statements with a function call
|
||||
SimilarFinderVisitor_replaceDuplicateCode=Replace Duplicated Code
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
*
|
||||
* Contributors:
|
||||
* Institute for Software - initial API and implementation
|
||||
* Sergey Prigogin (Google)
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.internal.ui.refactoring.extractfunction;
|
||||
|
||||
|
@ -56,6 +57,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNewExpression;
|
|||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTOperatorName;
|
||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleTypeConstructorExpression;
|
||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration;
|
||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTypeId;
|
||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUsingDeclaration;
|
||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTVisibilityLabel;
|
||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPVariable;
|
||||
|
@ -80,36 +82,39 @@ public class TrailNodeEqualityChecker implements EqualityChecker<IASTNode> {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean isEquals(IASTNode trailNode, IASTNode node) {
|
||||
public boolean isEqual(IASTNode trailNode, IASTNode node) {
|
||||
if ((trailNode instanceof TrailName && node instanceof IASTName)
|
||||
|| Arrays.equals(getInterfaces(node), getInterfaces(trailNode))) {
|
||||
// Is same type
|
||||
if (node instanceof IASTExpression) {
|
||||
return isExpressionEquals(trailNode, node);
|
||||
return isExpressionEqual(trailNode, node);
|
||||
} else if (node instanceof IASTStatement) {
|
||||
return isStatementEquals(trailNode, node);
|
||||
return isStatementEqual(trailNode, node);
|
||||
} else if (node instanceof IASTPointerOperator) {
|
||||
return isPointerOperatorEquals(trailNode, node);
|
||||
return isPointerOperatorEqual(trailNode, node);
|
||||
} else if (node instanceof IASTDeclaration) {
|
||||
return isDeclarationEquals(trailNode, node);
|
||||
return isDeclarationEqual(trailNode, node);
|
||||
} else if (node instanceof IASTDeclarator) {
|
||||
return isDeclaratorEquals(trailNode, node);
|
||||
return isDeclaratorEqual(trailNode, node);
|
||||
} else if (node instanceof IASTInitializer) {
|
||||
// No speciality, is the same type return true
|
||||
// No special case, the same type means equality
|
||||
return true;
|
||||
} else if (node instanceof IASTDeclSpecifier) {
|
||||
return isDeclSpecifierEquals(trailNode, node);
|
||||
return isDeclSpecifierEqual(trailNode, node);
|
||||
} else if (node instanceof ICPPASTTypeId) {
|
||||
return idTypeIdEqual((ICPPASTTypeId) trailNode, (ICPPASTTypeId) node);
|
||||
} else if (node instanceof IASTName) {
|
||||
return isNameEquals(trailNode, node);
|
||||
return isNameEqual(trailNode, node);
|
||||
} else {
|
||||
Assert.isLegal(false, "Unexpected Node, this code shoud nod reached"); //$NON-NLS-1$
|
||||
Assert.isLegal(false, "Unexpected node type " + node.getClass().getSimpleName() + //$NON-NLS-1$
|
||||
", this code shoud not be reached"); //$NON-NLS-1$
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean isNameEquals(IASTNode trailNode, IASTNode node) {
|
||||
private boolean isNameEqual(IASTNode trailNode, IASTNode node) {
|
||||
if (trailNode instanceof ICPPASTConversionName) {
|
||||
return true;
|
||||
} else if (trailNode instanceof ICPPASTOperatorName) {
|
||||
|
@ -119,21 +124,21 @@ public class TrailNodeEqualityChecker implements EqualityChecker<IASTNode> {
|
|||
} else if (trailNode instanceof TrailName && node instanceof IASTName) {
|
||||
TrailName trailName = (TrailName) trailNode;
|
||||
IASTName name = (IASTName)node;
|
||||
return isNameEquals(trailName, name);
|
||||
return isNameEqual(trailName, name);
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isDeclSpecifierEquals(IASTNode trailNode, IASTNode node) {
|
||||
private boolean isDeclSpecifierEqual(IASTNode trailNode, IASTNode node) {
|
||||
if (trailNode instanceof IASTSimpleDeclSpecifier) {
|
||||
IASTSimpleDeclSpecifier trailDecl = (IASTSimpleDeclSpecifier) trailNode;
|
||||
IASTSimpleDeclSpecifier decl = (IASTSimpleDeclSpecifier) node;
|
||||
return isSimpleDeclSpecifierEquals(trailDecl, decl);
|
||||
return isSimpleDeclSpecifierEqual(trailDecl, decl);
|
||||
} else if (trailNode instanceof ICPPASTNamedTypeSpecifier) {
|
||||
ICPPASTNamedTypeSpecifier trailDecl = (ICPPASTNamedTypeSpecifier) trailNode;
|
||||
ICPPASTNamedTypeSpecifier decl = (ICPPASTNamedTypeSpecifier) node;
|
||||
return isDeclSpecifierEquals(trailDecl, decl)
|
||||
return isDeclSpecifierEqual(trailDecl, decl)
|
||||
&& isSameNamedTypeSpecifierName(trailDecl, decl)
|
||||
&& trailDecl.isTypename() == decl.isTypename()
|
||||
&& trailDecl.isExplicit() == decl.isExplicit()
|
||||
|
@ -142,41 +147,41 @@ public class TrailNodeEqualityChecker implements EqualityChecker<IASTNode> {
|
|||
} else if (trailNode instanceof IASTNamedTypeSpecifier) {
|
||||
IASTNamedTypeSpecifier trailDecl = (IASTNamedTypeSpecifier) trailNode;
|
||||
IASTNamedTypeSpecifier decl = (IASTNamedTypeSpecifier) node;
|
||||
return isDeclSpecifierEquals(trailDecl, decl)
|
||||
return isDeclSpecifierEqual(trailDecl, decl)
|
||||
&& isSameNamedTypeSpecifierName(trailDecl, decl);
|
||||
} else if (trailNode instanceof IASTElaboratedTypeSpecifier) {
|
||||
IASTElaboratedTypeSpecifier trailDecl = (IASTElaboratedTypeSpecifier) trailNode;
|
||||
IASTElaboratedTypeSpecifier decl = (IASTElaboratedTypeSpecifier) node;
|
||||
return isDeclSpecifierEquals(trailDecl, decl)
|
||||
return isDeclSpecifierEqual(trailDecl, decl)
|
||||
&& trailDecl.getKind() == decl.getKind();
|
||||
} else if (trailNode instanceof IASTCompositeTypeSpecifier) {
|
||||
IASTCompositeTypeSpecifier trailDecl = (IASTCompositeTypeSpecifier) trailNode;
|
||||
IASTCompositeTypeSpecifier decl = (IASTCompositeTypeSpecifier) node;
|
||||
return isDeclSpecifierEquals(trailDecl, decl)
|
||||
return isDeclSpecifierEqual(trailDecl, decl)
|
||||
&& trailDecl.getKey() == decl.getKey();
|
||||
} else if (trailNode instanceof ICPPASTDeclSpecifier) {
|
||||
ICPPASTDeclSpecifier trailDecl = (ICPPASTDeclSpecifier) trailNode;
|
||||
ICPPASTDeclSpecifier decl = (ICPPASTDeclSpecifier) node;
|
||||
return isDeclSpecifierEquals(trailDecl, decl)
|
||||
return isDeclSpecifierEqual(trailDecl, decl)
|
||||
&& trailDecl.isExplicit() == decl.isExplicit()
|
||||
&& trailDecl.isFriend() == decl.isFriend()
|
||||
&& trailDecl.isVirtual() == decl.isVirtual();
|
||||
} else if (trailNode instanceof ICASTDeclSpecifier) {
|
||||
ICASTDeclSpecifier trailDecl = (ICASTDeclSpecifier) trailNode;
|
||||
ICASTDeclSpecifier decl = (ICASTDeclSpecifier) node;
|
||||
return isDeclSpecifierEquals(trailDecl, decl)
|
||||
return isDeclSpecifierEqual(trailDecl, decl)
|
||||
&& trailDecl.isRestrict() == decl.isRestrict();
|
||||
} else if (trailNode instanceof IASTDeclSpecifier) {
|
||||
IASTDeclSpecifier trailDecl = (IASTDeclSpecifier) trailNode;
|
||||
IASTDeclSpecifier decl = (IASTDeclSpecifier) node;
|
||||
return isDeclSpecifierEquals(trailDecl, decl);
|
||||
return isDeclSpecifierEqual(trailDecl, decl);
|
||||
} else {
|
||||
//is same
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isDeclaratorEquals(IASTNode trailNode, IASTNode node) {
|
||||
private boolean isDeclaratorEqual(IASTNode trailNode, IASTNode node) {
|
||||
if (trailNode instanceof IASTStandardFunctionDeclarator) {
|
||||
IASTStandardFunctionDeclarator trailFunc = (IASTStandardFunctionDeclarator) trailNode;
|
||||
IASTStandardFunctionDeclarator func = (IASTStandardFunctionDeclarator) node;
|
||||
|
@ -193,7 +198,7 @@ public class TrailNodeEqualityChecker implements EqualityChecker<IASTNode> {
|
|||
}
|
||||
}
|
||||
|
||||
private boolean isDeclarationEquals(IASTNode trailNode, IASTNode node) {
|
||||
private boolean isDeclarationEqual(IASTNode trailNode, IASTNode node) {
|
||||
if (trailNode instanceof IASTASMDeclaration) {
|
||||
IASTASMDeclaration trailASMDecl = (IASTASMDeclaration) trailNode;
|
||||
IASTASMDeclaration asmDecl = (IASTASMDeclaration) node;
|
||||
|
@ -224,7 +229,7 @@ public class TrailNodeEqualityChecker implements EqualityChecker<IASTNode> {
|
|||
}
|
||||
}
|
||||
|
||||
private boolean isPointerOperatorEquals(IASTNode trailNode, IASTNode node) {
|
||||
private boolean isPointerOperatorEqual(IASTNode trailNode, IASTNode node) {
|
||||
if (trailNode instanceof IASTPointer) {
|
||||
IASTPointer trailGPointer = (IASTPointer) trailNode;
|
||||
IASTPointer gPointer = (IASTPointer) node;
|
||||
|
@ -237,7 +242,7 @@ public class TrailNodeEqualityChecker implements EqualityChecker<IASTNode> {
|
|||
}
|
||||
}
|
||||
|
||||
private boolean isStatementEquals(IASTNode trailNode, IASTNode node) {
|
||||
private boolean isStatementEqual(IASTNode trailNode, IASTNode node) {
|
||||
if (trailNode instanceof ICPPASTCatchHandler) {
|
||||
ICPPASTCatchHandler trailCatch = (ICPPASTCatchHandler) trailNode;
|
||||
ICPPASTCatchHandler nodeCatch = (ICPPASTCatchHandler) node;
|
||||
|
@ -247,7 +252,11 @@ public class TrailNodeEqualityChecker implements EqualityChecker<IASTNode> {
|
|||
return true;
|
||||
}
|
||||
|
||||
private boolean isExpressionEquals(IASTNode trailNode, IASTNode node) {
|
||||
private boolean idTypeIdEqual(ICPPASTTypeId trailNode, ICPPASTTypeId node) {
|
||||
return trailNode.isPackExpansion() == node.isPackExpansion();
|
||||
}
|
||||
|
||||
private boolean isExpressionEqual(IASTNode trailNode, IASTNode node) {
|
||||
if (trailNode instanceof IASTBinaryExpression) {
|
||||
IASTBinaryExpression trailExpr = (IASTBinaryExpression) trailNode;
|
||||
IASTBinaryExpression expr = (IASTBinaryExpression) node;
|
||||
|
@ -284,7 +293,7 @@ public class TrailNodeEqualityChecker implements EqualityChecker<IASTNode> {
|
|||
} else if (trailNode instanceof ICPPASTSimpleTypeConstructorExpression) {
|
||||
ICPPASTSimpleTypeConstructorExpression trailConsExpr = (ICPPASTSimpleTypeConstructorExpression) trailNode;
|
||||
ICPPASTSimpleTypeConstructorExpression consExpr = (ICPPASTSimpleTypeConstructorExpression) node;
|
||||
return isDeclSpecifierEquals(trailConsExpr.getDeclSpecifier(), consExpr.getDeclSpecifier());
|
||||
return isDeclSpecifierEqual(trailConsExpr.getDeclSpecifier(), consExpr.getDeclSpecifier());
|
||||
} else {
|
||||
// same type
|
||||
return true;
|
||||
|
@ -302,7 +311,7 @@ public class TrailNodeEqualityChecker implements EqualityChecker<IASTNode> {
|
|||
return interfaceList.toArray(returnArray);
|
||||
}
|
||||
|
||||
private boolean isDeclSpecifierEquals(IASTDeclSpecifier trailDeclSpeci, IASTDeclSpecifier declSpeci) {
|
||||
private boolean isDeclSpecifierEqual(IASTDeclSpecifier trailDeclSpeci, IASTDeclSpecifier declSpeci) {
|
||||
if (trailDeclSpeci instanceof ICPPASTDeclSpecifier) {
|
||||
ICPPASTDeclSpecifier trailCppDecl= (ICPPASTDeclSpecifier) trailDeclSpeci;
|
||||
ICPPASTDeclSpecifier cppDecl= (ICPPASTDeclSpecifier) declSpeci;
|
||||
|
@ -319,8 +328,8 @@ public class TrailNodeEqualityChecker implements EqualityChecker<IASTNode> {
|
|||
&& trailDeclSpeci.getStorageClass() == declSpeci.getStorageClass();
|
||||
}
|
||||
|
||||
private boolean isSimpleDeclSpecifierEquals(IASTSimpleDeclSpecifier trailDeclSpeci, IASTSimpleDeclSpecifier declSpeci) {
|
||||
return isDeclSpecifierEquals(trailDeclSpeci, declSpeci)
|
||||
private boolean isSimpleDeclSpecifierEqual(IASTSimpleDeclSpecifier trailDeclSpeci, IASTSimpleDeclSpecifier declSpeci) {
|
||||
return isDeclSpecifierEqual(trailDeclSpeci, declSpeci)
|
||||
&& trailDeclSpeci.isLong() == declSpeci.isLong()
|
||||
&& trailDeclSpeci.isShort() == declSpeci.isShort()
|
||||
&& trailDeclSpeci.isSigned() == declSpeci.isSigned()
|
||||
|
@ -331,7 +340,7 @@ public class TrailNodeEqualityChecker implements EqualityChecker<IASTNode> {
|
|||
&& trailDeclSpeci.isLongLong() == declSpeci.isLongLong();
|
||||
}
|
||||
|
||||
private boolean isNameEquals(TrailName trailName, IASTName name) {
|
||||
private boolean isNameEqual(TrailName trailName, IASTName name) {
|
||||
int actCount = namesCounter.getObject().intValue();
|
||||
if (names.containsKey(name.getRawSignature())) {
|
||||
Integer nameId = names.get(name.getRawSignature());
|
||||
|
|
|
@ -84,7 +84,7 @@ public class ASTHelper {
|
|||
for (int i = 0; i < pointerOperators2.length; i++) {
|
||||
IASTPointerOperator operator1 = pointerOperators1[i];
|
||||
IASTPointerOperator operator2 = pointerOperators2[i];
|
||||
if (!checker.isEquals(operator1, operator2)) {
|
||||
if (!checker.isEqual(operator1, operator2)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue