diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplateSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplateSpecialization.java index b20a0b84d69..c1a0be272e5 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplateSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplateSpecialization.java @@ -8,9 +8,12 @@ * Contributors: * Andrew Niefer (IBM) - Initial API and implementation * Markus Schorn (Wind River Systems) + * Sergey Prigogin (Google) *******************************************************************************/ package org.eclipse.cdt.internal.core.dom.parser.cpp; +import java.util.Objects; + import org.eclipse.cdt.core.dom.ast.ASTTypeUtil; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IType; @@ -74,4 +77,21 @@ public class CPPFunctionTemplateSpecialization extends CPPFunctionSpecialization public IBinding resolveTemplateParameter(ICPPTemplateParameter param) { return param; } + + @Override + public boolean equals(Object obj) { + if (obj == this) + return true; + if (!getClass().equals(obj.getClass())) + return false; + CPPFunctionTemplateSpecialization other = (CPPFunctionTemplateSpecialization) obj; + return Objects.equals(getSpecializedBinding(), other.getSpecializedBinding()) + && Objects.equals(getOwner(), other.getOwner()) + && Objects.equals(getTemplateParameterMap(), other.getTemplateParameterMap()); + } + + @Override + public int hashCode() { + return Objects.hash(getSpecializedBinding(), getOwner(), getTemplateParameterMap()); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPMethodTemplateSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPMethodTemplateSpecialization.java index b426974d607..0eb4494a6f5 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPMethodTemplateSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPMethodTemplateSpecialization.java @@ -10,6 +10,7 @@ * Markus Schorn (Wind River Systems) * Thomas Corbat (IFS) * Nathan Ridge + * Sergey Prigogin (Google) *******************************************************************************/ package org.eclipse.cdt.internal.core.dom.parser.cpp; @@ -111,4 +112,14 @@ public class CPPMethodTemplateSpecialization extends CPPFunctionTemplateSpeciali public ICPPClassSpecialization getOwner() { return (ICPPClassSpecialization) super.getOwner(); } + + /** + * Overridden to emphasize that {@link #fTemplateParameters} does not participate in the equality + * relationship. + */ + @SuppressWarnings("javadoc") + @Override + public boolean equals(Object obj) { + return super.equals(obj); + } }