diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java index bcd6055182b..9016b33c6a5 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java @@ -741,6 +741,40 @@ public class IndexCPPTemplateResolutionTest extends IndexBindingResolutionTestBa assertEquals(((ICPPBasicType)bar.getType().getReturnType()).getType(), IBasicType.t_void); } + // template + // auto trailing_return_type(T& p) -> decltype(p.m()); + + // template + // struct A { + // typedef T type; + // }; + // + // template + // typename A::type declval(); + // + // template + // class B {}; + // + // template + // using C = decltype(trailing_return_type(declval())); + // + // template + // B> waldo(T& q); + // + // template + // struct D { + // T* m(); + // }; + // + // D b; + // + // void test() { + // waldo(b); + // } + public void testTrailingReturnType_460183() throws Exception { + checkBindings(); + } + // template class A { // public: // typedef T TD; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/TypeMarshalBuffer.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/TypeMarshalBuffer.java index 61b780e1c61..b99671275a6 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/TypeMarshalBuffer.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/TypeMarshalBuffer.java @@ -117,7 +117,9 @@ public final class TypeMarshalBuffer implements ITypeMarshalBuffer { fPos += 1; long rec= getRecordPointer(); return (IBinding) PDOMNode.load(fLinkage.getPDOM(), rec); - } else if (firstBytes == NULL_TYPE || firstBytes == UNSTORABLE_TYPE) { + } else if (firstBytes == NULL_TYPE) { + return null; + } else if (firstBytes == UNSTORABLE_TYPE) { return new ProblemBinding(null, ISemanticProblem.TYPE_NOT_PERSISTED); }