Index: lib/Index/IndexingContext.cpp =================================================================== --- lib/Index/IndexingContext.cpp +++ lib/Index/IndexingContext.cpp @@ -260,8 +260,10 @@ static const Decl *getCanonicalDecl(const Decl *D) { D = D->getCanonicalDecl(); if (auto TD = dyn_cast(D)) { - D = TD->getTemplatedDecl(); - assert(D->isCanonicalDecl()); + if (auto TTD = TD->getTemplatedDecl()) { + D = TTD; + assert(D->isCanonicalDecl()); + } } return D; Index: test/Index/Core/no-templated-canonical-decl.cpp =================================================================== --- /dev/null +++ test/Index/Core/no-templated-canonical-decl.cpp @@ -0,0 +1,4 @@ +// RUN: c-index-test core -print-source-symbols -include-locals -- %s | FileCheck %s + +template