From aeb39d63523f63ca996881acec9dc27f8ed38f2f Mon Sep 17 00:00:00 2001 From: Nathan Ridge Date: Fri, 20 Jan 2017 01:41:54 -0500 Subject: [PATCH] Bug 510706 - Handle UniqueType in SignatureBuilder.marshalType() Change-Id: I3686e3c32cacbcbad299de333eee32241a4697a5 --- .../core/dom/parser/cpp/semantics/SignatureBuilder.java | 8 ++++++++ .../cdt/internal/core/pdom/dom/TypeMarshalBuffer.java | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) 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); } }