Index: clangd/Selection.cpp =================================================================== --- clangd/Selection.cpp +++ clangd/Selection.cpp @@ -61,7 +61,7 @@ bool TraverseTypeLoc(TypeLoc X) { return traverseNode(&X, [&] { return Base::TraverseTypeLoc(X); }); } - bool TraverseTypeNestedNameSpecifierLoc(NestedNameSpecifierLoc X) { + bool TraverseNestedNameSpecifierLoc(NestedNameSpecifierLoc X) { return traverseNode( &X, [&] { return Base::TraverseNestedNameSpecifierLoc(X); }); } Index: clangd/unittests/SelectionTests.cpp =================================================================== --- clangd/unittests/SelectionTests.cpp +++ clangd/unittests/SelectionTests.cpp @@ -90,6 +90,13 @@ const char *CommonAncestorKind; }; Case Cases[] = { + { + R"cpp( + template + int x = [[T::^U::]]ccc(); + )cpp", + "NestedNameSpecifierLoc", + }, { R"cpp( struct AAA { struct BBB { static int ccc(); };}; @@ -184,8 +191,7 @@ template <[[template class /*cursor here*/^U]]> struct Foo*> {}; )cpp", - "TemplateTemplateParmDecl" - }, + "TemplateTemplateParmDecl"}, }; for (const Case &C : Cases) { Annotations Test(C.Code);