mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-13 19:25:38 +02:00
Fixed a bug in Extract Function refactoring.
This commit is contained in:
parent
a13c09f28d
commit
c73b8c8a4a
6 changed files with 69 additions and 60 deletions
|
@ -1,16 +1,16 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik
|
* Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik
|
||||||
* Rapperswil, University of applied sciences and others
|
* Rapperswil, University of applied sciences and others
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
* http://www.eclipse.org/legal/epl-v10.html
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* Institute for Software - initial API and implementation
|
* Institute for Software - initial API and implementation
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.internal.ui.refactoring;
|
package org.eclipse.cdt.internal.ui.refactoring;
|
||||||
|
|
||||||
public interface EqualityChecker<T> {
|
public interface EqualityChecker<T> {
|
||||||
boolean isEquals(T object1, T object2);
|
boolean isEqual(T object1, T object2);
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,7 @@ public class ExtractFunctionInputPage extends UserInputWizardPage {
|
||||||
private Text textField;
|
private Text textField;
|
||||||
private boolean firstTime;
|
private boolean firstTime;
|
||||||
private CSourceViewer signaturePreview;
|
private CSourceViewer signaturePreview;
|
||||||
private Document signaturePreviewDocument;
|
private final Document signaturePreviewDocument;
|
||||||
private IDialogSettings settings;
|
private IDialogSettings settings;
|
||||||
|
|
||||||
private static final String DESCRIPTION = Messages.ExtractFunctionInputPage_description;
|
private static final String DESCRIPTION = Messages.ExtractFunctionInputPage_description;
|
||||||
|
@ -252,7 +252,7 @@ public class ExtractFunctionInputPage extends UserInputWizardPage {
|
||||||
|
|
||||||
if (methodName.isEmpty()) {
|
if (methodName.isEmpty()) {
|
||||||
methodName = StubUtility.suggestMethodName("someMethodName", null, //$NON-NLS-1$
|
methodName = StubUtility.suggestMethodName("someMethodName", null, //$NON-NLS-1$
|
||||||
refactoring.getTranslationUnit());
|
refactoring.getTranslationUnit());
|
||||||
}
|
}
|
||||||
|
|
||||||
int top = signaturePreview.getTextWidget().getTopPixel();
|
int top = signaturePreview.getTextWidget().getTopPixel();
|
||||||
|
|
|
@ -518,7 +518,7 @@ public class ExtractFunctionRefactoring extends CRefactoring {
|
||||||
IASTNode trailNode = trail.get(pos);
|
IASTNode trailNode = trail.get(pos);
|
||||||
trailPos.setObject(Integer.valueOf(pos + 1));
|
trailPos.setObject(Integer.valueOf(pos + 1));
|
||||||
|
|
||||||
if (equalityChecker.isEquals(trailNode, node)) {
|
if (equalityChecker.isEqual(trailNode, node)) {
|
||||||
if (node instanceof ICPPASTQualifiedName || node instanceof IASTNamedTypeSpecifier) {
|
if (node instanceof ICPPASTQualifiedName || node instanceof IASTNamedTypeSpecifier) {
|
||||||
return PROCESS_SKIP;
|
return PROCESS_SKIP;
|
||||||
} else {
|
} else {
|
||||||
|
@ -563,7 +563,7 @@ public class ExtractFunctionRefactoring extends CRefactoring {
|
||||||
IASTParameterDeclaration newParameter = declarator.getParameters()[i];
|
IASTParameterDeclaration newParameter = declarator.getParameters()[i];
|
||||||
|
|
||||||
// If not the same break;
|
// If not the same break;
|
||||||
if (!(equalityChecker.isEquals(origParameter.getDeclSpecifier(),
|
if (!(equalityChecker.isEqual(origParameter.getDeclSpecifier(),
|
||||||
newParameter.getDeclSpecifier()) &&
|
newParameter.getDeclSpecifier()) &&
|
||||||
ASTHelper.samePointers(origParameter.getDeclarator().getPointerOperators(),
|
ASTHelper.samePointers(origParameter.getDeclarator().getPointerOperators(),
|
||||||
newParameter.getDeclarator().getPointerOperators(),
|
newParameter.getDeclarator().getPointerOperators(),
|
||||||
|
|
|
@ -22,7 +22,7 @@ ExtractFunctionRefactoring_CreateFunctionDef=Create Function Definition
|
||||||
ExtractFunctionRefactoring_CreateMethodCall=Create Method Call
|
ExtractFunctionRefactoring_CreateMethodCall=Create Method Call
|
||||||
ExtractFunctionRefactoring_CreateFunctionCall=Create Function Call
|
ExtractFunctionRefactoring_CreateFunctionCall=Create Function Call
|
||||||
ExtractFunctionRefactoring_Error_Return=Extracting return statements is not supported
|
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.
|
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_description=Enter new method name and specify the method's visibility
|
||||||
ExtractFunctionInputPage_access_modifier=&Access modifier:
|
ExtractFunctionInputPage_access_modifier=&Access modifier:
|
||||||
|
@ -34,7 +34,7 @@ ExtractFunctionInputPage_label_text=Function &name:
|
||||||
ExtractFunctionInputPage_parameters=&Parameters:
|
ExtractFunctionInputPage_parameters=&Parameters:
|
||||||
ExtractFunctionInputPage_validation_empty_function_name=Provide a method name
|
ExtractFunctionInputPage_validation_empty_function_name=Provide a method name
|
||||||
ExtractFunctionInputPage_validation_empty_parameter_name=Parameter names cannot be empty
|
ExtractFunctionInputPage_validation_empty_parameter_name=Parameter names cannot be empty
|
||||||
ExtractFunctionInputPage_duplicates_none=&Replace 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 method
|
ExtractFunctionInputPage_duplicates_single=&Replace 1 additional occurrence of statements with a function call
|
||||||
ExtractFunctionInputPage_duplicates_multi=&Replace {0} additional occurrences of statements with method
|
ExtractFunctionInputPage_duplicates_multi=&Replace {0} additional occurrences of statements with a function call
|
||||||
SimilarFinderVisitor_replaceDuplicateCode=Replace Duplicated Code
|
SimilarFinderVisitor_replaceDuplicateCode=Replace Duplicated Code
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2008, 2010 Institute for Software, HSR Hochschule fuer Technik
|
* Copyright (c) 2008, 2010 Institute for Software, HSR Hochschule fuer Technik
|
||||||
* Rapperswil, University of applied sciences and others
|
* Rapperswil, University of applied sciences and others
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
* http://www.eclipse.org/legal/epl-v10.html
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* Institute for Software - initial API and implementation
|
* Institute for Software - initial API and implementation
|
||||||
|
* Sergey Prigogin (Google)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.internal.ui.refactoring.extractfunction;
|
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.ICPPASTOperatorName;
|
||||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleTypeConstructorExpression;
|
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.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.ICPPASTUsingDeclaration;
|
||||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTVisibilityLabel;
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTVisibilityLabel;
|
||||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPVariable;
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPVariable;
|
||||||
|
@ -70,7 +72,7 @@ public class TrailNodeEqualityChecker implements EqualityChecker<IASTNode> {
|
||||||
private final Map<String, Integer> names;
|
private final Map<String, Integer> names;
|
||||||
private final Container<Integer> namesCounter;
|
private final Container<Integer> namesCounter;
|
||||||
private final IIndex index;
|
private final IIndex index;
|
||||||
|
|
||||||
public TrailNodeEqualityChecker(Map<String, Integer> names, Container<Integer> namesCounter,
|
public TrailNodeEqualityChecker(Map<String, Integer> names, Container<Integer> namesCounter,
|
||||||
IIndex index) {
|
IIndex index) {
|
||||||
super();
|
super();
|
||||||
|
@ -78,38 +80,41 @@ public class TrailNodeEqualityChecker implements EqualityChecker<IASTNode> {
|
||||||
this.namesCounter = namesCounter;
|
this.namesCounter = namesCounter;
|
||||||
this.index = index;
|
this.index = index;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEquals(IASTNode trailNode, IASTNode node) {
|
public boolean isEqual(IASTNode trailNode, IASTNode node) {
|
||||||
if ((trailNode instanceof TrailName && node instanceof IASTName)
|
if ((trailNode instanceof TrailName && node instanceof IASTName)
|
||||||
|| Arrays.equals(getInterfaces(node), getInterfaces(trailNode))) {
|
|| Arrays.equals(getInterfaces(node), getInterfaces(trailNode))) {
|
||||||
// Is same type
|
// Is same type
|
||||||
if (node instanceof IASTExpression) {
|
if (node instanceof IASTExpression) {
|
||||||
return isExpressionEquals(trailNode, node);
|
return isExpressionEqual(trailNode, node);
|
||||||
} else if (node instanceof IASTStatement) {
|
} else if (node instanceof IASTStatement) {
|
||||||
return isStatementEquals(trailNode, node);
|
return isStatementEqual(trailNode, node);
|
||||||
} else if (node instanceof IASTPointerOperator) {
|
} else if (node instanceof IASTPointerOperator) {
|
||||||
return isPointerOperatorEquals(trailNode, node);
|
return isPointerOperatorEqual(trailNode, node);
|
||||||
} else if (node instanceof IASTDeclaration) {
|
} else if (node instanceof IASTDeclaration) {
|
||||||
return isDeclarationEquals(trailNode, node);
|
return isDeclarationEqual(trailNode, node);
|
||||||
} else if (node instanceof IASTDeclarator) {
|
} else if (node instanceof IASTDeclarator) {
|
||||||
return isDeclaratorEquals(trailNode, node);
|
return isDeclaratorEqual(trailNode, node);
|
||||||
} else if (node instanceof IASTInitializer) {
|
} else if (node instanceof IASTInitializer) {
|
||||||
// No speciality, is the same type return true
|
// No special case, the same type means equality
|
||||||
return true;
|
return true;
|
||||||
} else if (node instanceof IASTDeclSpecifier) {
|
} 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) {
|
} else if (node instanceof IASTName) {
|
||||||
return isNameEquals(trailNode, node);
|
return isNameEqual(trailNode, node);
|
||||||
} else {
|
} 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 true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isNameEquals(IASTNode trailNode, IASTNode node) {
|
private boolean isNameEqual(IASTNode trailNode, IASTNode node) {
|
||||||
if (trailNode instanceof ICPPASTConversionName) {
|
if (trailNode instanceof ICPPASTConversionName) {
|
||||||
return true;
|
return true;
|
||||||
} else if (trailNode instanceof ICPPASTOperatorName) {
|
} else if (trailNode instanceof ICPPASTOperatorName) {
|
||||||
|
@ -119,21 +124,21 @@ public class TrailNodeEqualityChecker implements EqualityChecker<IASTNode> {
|
||||||
} else if (trailNode instanceof TrailName && node instanceof IASTName) {
|
} else if (trailNode instanceof TrailName && node instanceof IASTName) {
|
||||||
TrailName trailName = (TrailName) trailNode;
|
TrailName trailName = (TrailName) trailNode;
|
||||||
IASTName name = (IASTName)node;
|
IASTName name = (IASTName)node;
|
||||||
return isNameEquals(trailName, name);
|
return isNameEqual(trailName, name);
|
||||||
} else {
|
} else {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isDeclSpecifierEquals(IASTNode trailNode, IASTNode node) {
|
private boolean isDeclSpecifierEqual(IASTNode trailNode, IASTNode node) {
|
||||||
if (trailNode instanceof IASTSimpleDeclSpecifier) {
|
if (trailNode instanceof IASTSimpleDeclSpecifier) {
|
||||||
IASTSimpleDeclSpecifier trailDecl = (IASTSimpleDeclSpecifier) trailNode;
|
IASTSimpleDeclSpecifier trailDecl = (IASTSimpleDeclSpecifier) trailNode;
|
||||||
IASTSimpleDeclSpecifier decl = (IASTSimpleDeclSpecifier) node;
|
IASTSimpleDeclSpecifier decl = (IASTSimpleDeclSpecifier) node;
|
||||||
return isSimpleDeclSpecifierEquals(trailDecl, decl);
|
return isSimpleDeclSpecifierEqual(trailDecl, decl);
|
||||||
} else if (trailNode instanceof ICPPASTNamedTypeSpecifier) {
|
} else if (trailNode instanceof ICPPASTNamedTypeSpecifier) {
|
||||||
ICPPASTNamedTypeSpecifier trailDecl = (ICPPASTNamedTypeSpecifier) trailNode;
|
ICPPASTNamedTypeSpecifier trailDecl = (ICPPASTNamedTypeSpecifier) trailNode;
|
||||||
ICPPASTNamedTypeSpecifier decl = (ICPPASTNamedTypeSpecifier) node;
|
ICPPASTNamedTypeSpecifier decl = (ICPPASTNamedTypeSpecifier) node;
|
||||||
return isDeclSpecifierEquals(trailDecl, decl)
|
return isDeclSpecifierEqual(trailDecl, decl)
|
||||||
&& isSameNamedTypeSpecifierName(trailDecl, decl)
|
&& isSameNamedTypeSpecifierName(trailDecl, decl)
|
||||||
&& trailDecl.isTypename() == decl.isTypename()
|
&& trailDecl.isTypename() == decl.isTypename()
|
||||||
&& trailDecl.isExplicit() == decl.isExplicit()
|
&& trailDecl.isExplicit() == decl.isExplicit()
|
||||||
|
@ -142,41 +147,41 @@ public class TrailNodeEqualityChecker implements EqualityChecker<IASTNode> {
|
||||||
} else if (trailNode instanceof IASTNamedTypeSpecifier) {
|
} else if (trailNode instanceof IASTNamedTypeSpecifier) {
|
||||||
IASTNamedTypeSpecifier trailDecl = (IASTNamedTypeSpecifier) trailNode;
|
IASTNamedTypeSpecifier trailDecl = (IASTNamedTypeSpecifier) trailNode;
|
||||||
IASTNamedTypeSpecifier decl = (IASTNamedTypeSpecifier) node;
|
IASTNamedTypeSpecifier decl = (IASTNamedTypeSpecifier) node;
|
||||||
return isDeclSpecifierEquals(trailDecl, decl)
|
return isDeclSpecifierEqual(trailDecl, decl)
|
||||||
&& isSameNamedTypeSpecifierName(trailDecl, decl);
|
&& isSameNamedTypeSpecifierName(trailDecl, decl);
|
||||||
} else if (trailNode instanceof IASTElaboratedTypeSpecifier) {
|
} else if (trailNode instanceof IASTElaboratedTypeSpecifier) {
|
||||||
IASTElaboratedTypeSpecifier trailDecl = (IASTElaboratedTypeSpecifier) trailNode;
|
IASTElaboratedTypeSpecifier trailDecl = (IASTElaboratedTypeSpecifier) trailNode;
|
||||||
IASTElaboratedTypeSpecifier decl = (IASTElaboratedTypeSpecifier) node;
|
IASTElaboratedTypeSpecifier decl = (IASTElaboratedTypeSpecifier) node;
|
||||||
return isDeclSpecifierEquals(trailDecl, decl)
|
return isDeclSpecifierEqual(trailDecl, decl)
|
||||||
&& trailDecl.getKind() == decl.getKind();
|
&& trailDecl.getKind() == decl.getKind();
|
||||||
} else if (trailNode instanceof IASTCompositeTypeSpecifier) {
|
} else if (trailNode instanceof IASTCompositeTypeSpecifier) {
|
||||||
IASTCompositeTypeSpecifier trailDecl = (IASTCompositeTypeSpecifier) trailNode;
|
IASTCompositeTypeSpecifier trailDecl = (IASTCompositeTypeSpecifier) trailNode;
|
||||||
IASTCompositeTypeSpecifier decl = (IASTCompositeTypeSpecifier) node;
|
IASTCompositeTypeSpecifier decl = (IASTCompositeTypeSpecifier) node;
|
||||||
return isDeclSpecifierEquals(trailDecl, decl)
|
return isDeclSpecifierEqual(trailDecl, decl)
|
||||||
&& trailDecl.getKey() == decl.getKey();
|
&& trailDecl.getKey() == decl.getKey();
|
||||||
} else if (trailNode instanceof ICPPASTDeclSpecifier) {
|
} else if (trailNode instanceof ICPPASTDeclSpecifier) {
|
||||||
ICPPASTDeclSpecifier trailDecl = (ICPPASTDeclSpecifier) trailNode;
|
ICPPASTDeclSpecifier trailDecl = (ICPPASTDeclSpecifier) trailNode;
|
||||||
ICPPASTDeclSpecifier decl = (ICPPASTDeclSpecifier) node;
|
ICPPASTDeclSpecifier decl = (ICPPASTDeclSpecifier) node;
|
||||||
return isDeclSpecifierEquals(trailDecl, decl)
|
return isDeclSpecifierEqual(trailDecl, decl)
|
||||||
&& trailDecl.isExplicit() == decl.isExplicit()
|
&& trailDecl.isExplicit() == decl.isExplicit()
|
||||||
&& trailDecl.isFriend() == decl.isFriend()
|
&& trailDecl.isFriend() == decl.isFriend()
|
||||||
&& trailDecl.isVirtual() == decl.isVirtual();
|
&& trailDecl.isVirtual() == decl.isVirtual();
|
||||||
} else if (trailNode instanceof ICASTDeclSpecifier) {
|
} else if (trailNode instanceof ICASTDeclSpecifier) {
|
||||||
ICASTDeclSpecifier trailDecl = (ICASTDeclSpecifier) trailNode;
|
ICASTDeclSpecifier trailDecl = (ICASTDeclSpecifier) trailNode;
|
||||||
ICASTDeclSpecifier decl = (ICASTDeclSpecifier) node;
|
ICASTDeclSpecifier decl = (ICASTDeclSpecifier) node;
|
||||||
return isDeclSpecifierEquals(trailDecl, decl)
|
return isDeclSpecifierEqual(trailDecl, decl)
|
||||||
&& trailDecl.isRestrict() == decl.isRestrict();
|
&& trailDecl.isRestrict() == decl.isRestrict();
|
||||||
} else if (trailNode instanceof IASTDeclSpecifier) {
|
} else if (trailNode instanceof IASTDeclSpecifier) {
|
||||||
IASTDeclSpecifier trailDecl = (IASTDeclSpecifier) trailNode;
|
IASTDeclSpecifier trailDecl = (IASTDeclSpecifier) trailNode;
|
||||||
IASTDeclSpecifier decl = (IASTDeclSpecifier) node;
|
IASTDeclSpecifier decl = (IASTDeclSpecifier) node;
|
||||||
return isDeclSpecifierEquals(trailDecl, decl);
|
return isDeclSpecifierEqual(trailDecl, decl);
|
||||||
} else {
|
} else {
|
||||||
//is same
|
//is same
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isDeclaratorEquals(IASTNode trailNode, IASTNode node) {
|
private boolean isDeclaratorEqual(IASTNode trailNode, IASTNode node) {
|
||||||
if (trailNode instanceof IASTStandardFunctionDeclarator) {
|
if (trailNode instanceof IASTStandardFunctionDeclarator) {
|
||||||
IASTStandardFunctionDeclarator trailFunc = (IASTStandardFunctionDeclarator) trailNode;
|
IASTStandardFunctionDeclarator trailFunc = (IASTStandardFunctionDeclarator) trailNode;
|
||||||
IASTStandardFunctionDeclarator func = (IASTStandardFunctionDeclarator) node;
|
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) {
|
if (trailNode instanceof IASTASMDeclaration) {
|
||||||
IASTASMDeclaration trailASMDecl = (IASTASMDeclaration) trailNode;
|
IASTASMDeclaration trailASMDecl = (IASTASMDeclaration) trailNode;
|
||||||
IASTASMDeclaration asmDecl = (IASTASMDeclaration) node;
|
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) {
|
if (trailNode instanceof IASTPointer) {
|
||||||
IASTPointer trailGPointer = (IASTPointer) trailNode;
|
IASTPointer trailGPointer = (IASTPointer) trailNode;
|
||||||
IASTPointer gPointer = (IASTPointer) node;
|
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) {
|
if (trailNode instanceof ICPPASTCatchHandler) {
|
||||||
ICPPASTCatchHandler trailCatch = (ICPPASTCatchHandler) trailNode;
|
ICPPASTCatchHandler trailCatch = (ICPPASTCatchHandler) trailNode;
|
||||||
ICPPASTCatchHandler nodeCatch = (ICPPASTCatchHandler) node;
|
ICPPASTCatchHandler nodeCatch = (ICPPASTCatchHandler) node;
|
||||||
|
@ -247,7 +252,11 @@ public class TrailNodeEqualityChecker implements EqualityChecker<IASTNode> {
|
||||||
return true;
|
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) {
|
if (trailNode instanceof IASTBinaryExpression) {
|
||||||
IASTBinaryExpression trailExpr = (IASTBinaryExpression) trailNode;
|
IASTBinaryExpression trailExpr = (IASTBinaryExpression) trailNode;
|
||||||
IASTBinaryExpression expr = (IASTBinaryExpression) node;
|
IASTBinaryExpression expr = (IASTBinaryExpression) node;
|
||||||
|
@ -284,7 +293,7 @@ public class TrailNodeEqualityChecker implements EqualityChecker<IASTNode> {
|
||||||
} else if (trailNode instanceof ICPPASTSimpleTypeConstructorExpression) {
|
} else if (trailNode instanceof ICPPASTSimpleTypeConstructorExpression) {
|
||||||
ICPPASTSimpleTypeConstructorExpression trailConsExpr = (ICPPASTSimpleTypeConstructorExpression) trailNode;
|
ICPPASTSimpleTypeConstructorExpression trailConsExpr = (ICPPASTSimpleTypeConstructorExpression) trailNode;
|
||||||
ICPPASTSimpleTypeConstructorExpression consExpr = (ICPPASTSimpleTypeConstructorExpression) node;
|
ICPPASTSimpleTypeConstructorExpression consExpr = (ICPPASTSimpleTypeConstructorExpression) node;
|
||||||
return isDeclSpecifierEquals(trailConsExpr.getDeclSpecifier(), consExpr.getDeclSpecifier());
|
return isDeclSpecifierEqual(trailConsExpr.getDeclSpecifier(), consExpr.getDeclSpecifier());
|
||||||
} else {
|
} else {
|
||||||
// same type
|
// same type
|
||||||
return true;
|
return true;
|
||||||
|
@ -302,7 +311,7 @@ public class TrailNodeEqualityChecker implements EqualityChecker<IASTNode> {
|
||||||
return interfaceList.toArray(returnArray);
|
return interfaceList.toArray(returnArray);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isDeclSpecifierEquals(IASTDeclSpecifier trailDeclSpeci, IASTDeclSpecifier declSpeci) {
|
private boolean isDeclSpecifierEqual(IASTDeclSpecifier trailDeclSpeci, IASTDeclSpecifier declSpeci) {
|
||||||
if (trailDeclSpeci instanceof ICPPASTDeclSpecifier) {
|
if (trailDeclSpeci instanceof ICPPASTDeclSpecifier) {
|
||||||
ICPPASTDeclSpecifier trailCppDecl= (ICPPASTDeclSpecifier) trailDeclSpeci;
|
ICPPASTDeclSpecifier trailCppDecl= (ICPPASTDeclSpecifier) trailDeclSpeci;
|
||||||
ICPPASTDeclSpecifier cppDecl= (ICPPASTDeclSpecifier) declSpeci;
|
ICPPASTDeclSpecifier cppDecl= (ICPPASTDeclSpecifier) declSpeci;
|
||||||
|
@ -319,8 +328,8 @@ public class TrailNodeEqualityChecker implements EqualityChecker<IASTNode> {
|
||||||
&& trailDeclSpeci.getStorageClass() == declSpeci.getStorageClass();
|
&& trailDeclSpeci.getStorageClass() == declSpeci.getStorageClass();
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isSimpleDeclSpecifierEquals(IASTSimpleDeclSpecifier trailDeclSpeci, IASTSimpleDeclSpecifier declSpeci) {
|
private boolean isSimpleDeclSpecifierEqual(IASTSimpleDeclSpecifier trailDeclSpeci, IASTSimpleDeclSpecifier declSpeci) {
|
||||||
return isDeclSpecifierEquals(trailDeclSpeci, declSpeci)
|
return isDeclSpecifierEqual(trailDeclSpeci, declSpeci)
|
||||||
&& trailDeclSpeci.isLong() == declSpeci.isLong()
|
&& trailDeclSpeci.isLong() == declSpeci.isLong()
|
||||||
&& trailDeclSpeci.isShort() == declSpeci.isShort()
|
&& trailDeclSpeci.isShort() == declSpeci.isShort()
|
||||||
&& trailDeclSpeci.isSigned() == declSpeci.isSigned()
|
&& trailDeclSpeci.isSigned() == declSpeci.isSigned()
|
||||||
|
@ -331,7 +340,7 @@ public class TrailNodeEqualityChecker implements EqualityChecker<IASTNode> {
|
||||||
&& trailDeclSpeci.isLongLong() == declSpeci.isLongLong();
|
&& trailDeclSpeci.isLongLong() == declSpeci.isLongLong();
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isNameEquals(TrailName trailName, IASTName name) {
|
private boolean isNameEqual(TrailName trailName, IASTName name) {
|
||||||
int actCount = namesCounter.getObject().intValue();
|
int actCount = namesCounter.getObject().intValue();
|
||||||
if (names.containsKey(name.getRawSignature())) {
|
if (names.containsKey(name.getRawSignature())) {
|
||||||
Integer nameId = names.get(name.getRawSignature());
|
Integer nameId = names.get(name.getRawSignature());
|
||||||
|
@ -344,7 +353,7 @@ public class TrailNodeEqualityChecker implements EqualityChecker<IASTNode> {
|
||||||
|
|
||||||
if (actCount != trailName.getNameNumber()) {
|
if (actCount != trailName.getNameNumber()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trailName.isGloballyQualified()) {
|
if (trailName.isGloballyQualified()) {
|
||||||
IBinding realBind = trailName.getRealName().resolveBinding();
|
IBinding realBind = trailName.getRealName().resolveBinding();
|
||||||
|
|
|
@ -84,7 +84,7 @@ public class ASTHelper {
|
||||||
for (int i = 0; i < pointerOperators2.length; i++) {
|
for (int i = 0; i < pointerOperators2.length; i++) {
|
||||||
IASTPointerOperator operator1 = pointerOperators1[i];
|
IASTPointerOperator operator1 = pointerOperators1[i];
|
||||||
IASTPointerOperator operator2 = pointerOperators2[i];
|
IASTPointerOperator operator2 = pointerOperators2[i];
|
||||||
if (!checker.isEquals(operator1, operator2)) {
|
if (!checker.isEqual(operator1, operator2)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue