diff --git a/clang-tools-extra/clangd/unittests/HoverTests.cpp b/clang-tools-extra/clangd/unittests/HoverTests.cpp --- a/clang-tools-extra/clangd/unittests/HoverTests.cpp +++ b/clang-tools-extra/clangd/unittests/HoverTests.cpp @@ -198,7 +198,7 @@ typename = char, int = 0, bool Q = false, - class... Ts> class Foo {}; + class... Ts> class Foo final {}; template <template<typename, bool...> class T> [[F^oo]]<T> foo; )cpp", @@ -209,7 +209,7 @@ HI.Definition = R"cpp(template <template <typename, bool...> class C, typename = char, int = 0, bool Q = false, class... Ts> -class Foo {})cpp"; +class Foo final {})cpp"; HI.TemplateParameters = { {{"template <typename, bool...> class"}, std::string("C"), diff --git a/clang/lib/AST/DeclPrinter.cpp b/clang/lib/AST/DeclPrinter.cpp --- a/clang/lib/AST/DeclPrinter.cpp +++ b/clang/lib/AST/DeclPrinter.cpp @@ -1007,6 +1007,12 @@ } } + if (auto *Def = D->getDefinition()) { + if (D->hasAttr<FinalAttr>()) { + Out << " final"; + } + } + if (D->isCompleteDefinition()) { // Print the base classes if (D->getNumBases()) {