diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/SignatureBuilder.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/SignatureBuilder.java index c38912b1ce0..ea6c8115856 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/SignatureBuilder.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/SignatureBuilder.java @@ -76,6 +76,14 @@ class SignatureBuilder implements ITypeMarshalBuffer { putShort(NULL_TYPE); } else if (type instanceof IBinding) { marshalBinding((IBinding) type); + } else if (type instanceof UniqueType) { + // UniqueType is not an ISerializableType because there should never be + // a need to write it to the index, but it can appear in a signature + // during partial ordering of function templates. + appendSeparator(); + fBuffer.append("Unique(@"); //$NON-NLS-1$ + fBuffer.append(Integer.toHexString(System.identityHashCode(type))); + fBuffer.append(')'); } else { assert false : "Cannot serialize " + ASTTypeUtil.getType(type) + " (" + type.getClass().getName() + ")"; //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ putShort(UNSTORABLE_TYPE); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/TypeMarshalBuffer.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/TypeMarshalBuffer.java index 42288599aaa..f449ac771cd 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/TypeMarshalBuffer.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/TypeMarshalBuffer.java @@ -136,7 +136,7 @@ public final class TypeMarshalBuffer implements ITypeMarshalBuffer { } else if (type instanceof IBinding) { marshalBinding((IBinding) type); } else { - assert false : "Cannot serialize " + ASTTypeUtil.getType(type) + " (" + type.getClass().getName() + ")"; //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ + CCorePlugin.log("Cannot serialize " + ASTTypeUtil.getType(type) + " (" + type.getClass().getName() + ")"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ putShort(UNSTORABLE_TYPE); } }