Author: Jens Massberg Date: 2023-07-18T10:19:46+02:00 New Revision: e9ab43dd44cafe5a67f0a12b9ff1021d47074970
URL: https://github.com/llvm/llvm-project/commit/e9ab43dd44cafe5a67f0a12b9ff1021d47074970 DIFF: https://github.com/llvm/llvm-project/commit/e9ab43dd44cafe5a67f0a12b9ff1021d47074970.diff LOG: [clangd][c++20] Add concept Hover tests. Concepts aren't fully supporteb by hover yet. For the currently supported case we add a test here to prevent regressions in the future. Differential Revision: https://reviews.llvm.org/D155558 Added: Modified: clang-tools-extra/clangd/unittests/HoverTests.cpp Removed: ################################################################################ diff --git a/clang-tools-extra/clangd/unittests/HoverTests.cpp b/clang-tools-extra/clangd/unittests/HoverTests.cpp index 91060a517de530..2ad7f0ee55d726 100644 --- a/clang-tools-extra/clangd/unittests/HoverTests.cpp +++ b/clang-tools-extra/clangd/unittests/HoverTests.cpp @@ -523,6 +523,32 @@ class Foo final {})cpp"; HI.Kind = index::SymbolKind::TypeAlias; HI.Definition = "Foo<int>"; }}, + // constrained template parameter + {R"cpp( + template<class T> concept Fooable = true; + template<[[Foo^able]] T> + void bar(T t) {} + )cpp", + [](HoverInfo &HI) { + HI.NamespaceScope = ""; + HI.Name = "Fooable"; + HI.Kind = index::SymbolKind::Concept; + HI.Definition = "template <class T>\nconcept Fooable = true"; + }}, + {R"cpp( + template<class T> concept Fooable = true; + template<Fooable [[T^T]]> + void bar(TT t) {} + )cpp", + [](HoverInfo &HI) { + HI.Name = "TT"; + HI.Type = "class"; + HI.AccessSpecifier = "public"; + HI.NamespaceScope = ""; + HI.LocalScope = "bar::"; + HI.Kind = index::SymbolKind::TemplateTypeParm; + HI.Definition = "Fooable TT"; + }}, // empty macro {R"cpp( @@ -3025,17 +3051,17 @@ TEST(Hover, Providers) { const char *Code; const std::function<void(HoverInfo &)> ExpectedBuilder; } Cases[] = {{R"cpp( - struct Foo {}; + struct Foo {}; Foo F = Fo^o{}; )cpp", [](HoverInfo &HI) { HI.Provider = ""; }}, {R"cpp( - #include "foo.h" + #include "foo.h" Foo F = Fo^o{}; )cpp", [](HoverInfo &HI) { HI.Provider = "\"foo.h\""; }}, {R"cpp( - #include "all.h" + #include "all.h" Foo F = Fo^o{}; )cpp", [](HoverInfo &HI) { HI.Provider = "\"foo.h\""; }}, @@ -3055,7 +3081,7 @@ TEST(Hover, Providers) { )cpp", [](HoverInfo &HI) { HI.Provider = "\"foo.h\""; }}, {R"cpp( - #include "foo.h" + #include "foo.h" Foo A; Foo B; Foo C = A ^+ B; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits