sammccall created this revision. sammccall added reviewers: hokein, lh123. Herald added subscribers: cfe-commits, usaxena95, kadircet, ilya-biryukov. Herald added a project: clang.
This is shorter, shouldn't be confusing (is consistent with how they're declared), and avoids messy cases that are printed as myclass<type-param-0-0>(int) in the case of partial specialization. Fixes part of https://github.com/clangd/clangd/issues/76 Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D70307 Files: clang/lib/Sema/SemaCodeComplete.cpp clang/test/CodeCompletion/templates.cpp Index: clang/test/CodeCompletion/templates.cpp =================================================================== --- clang/test/CodeCompletion/templates.cpp +++ clang/test/CodeCompletion/templates.cpp @@ -24,5 +24,12 @@ // CHECK-CC2: foo // CHECK-CC2: in_base // CHECK-CC2: stop - +} + +template <typename> struct X; +template <typename T> struct X<T*> { X(double); }; +X<int*> x(42); +// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:32:11 %s -o - | FileCheck -check-prefix=CHECK-CONSTRUCTOR %s +// CHECK-CONSTRUCTOR: OVERLOAD: X(<#double#>) +// (rather than X<type-parameter-0-0 *>(<#double#>) Index: clang/lib/Sema/SemaCodeComplete.cpp =================================================================== --- clang/lib/Sema/SemaCodeComplete.cpp +++ clang/lib/Sema/SemaCodeComplete.cpp @@ -3653,6 +3653,10 @@ unsigned CurrentArg, Sema &S, CodeCompletionAllocator &Allocator, CodeCompletionTUInfo &CCTUInfo, bool IncludeBriefComments) const { PrintingPolicy Policy = getCompletionPrintingPolicy(S); + // Show signatures of constructors as they are declared: + // vector(int n) rather than vector<string>(int n) + // This is less noisy without being less clear, and avoids tricky cases. + Policy.SuppressTemplateArgsInCXXConstructors = true; // FIXME: Set priority, availability appropriately. CodeCompletionBuilder Result(Allocator, CCTUInfo, 1,
Index: clang/test/CodeCompletion/templates.cpp =================================================================== --- clang/test/CodeCompletion/templates.cpp +++ clang/test/CodeCompletion/templates.cpp @@ -24,5 +24,12 @@ // CHECK-CC2: foo // CHECK-CC2: in_base // CHECK-CC2: stop - +} + +template <typename> struct X; +template <typename T> struct X<T*> { X(double); }; +X<int*> x(42); +// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:32:11 %s -o - | FileCheck -check-prefix=CHECK-CONSTRUCTOR %s +// CHECK-CONSTRUCTOR: OVERLOAD: X(<#double#>) +// (rather than X<type-parameter-0-0 *>(<#double#>) Index: clang/lib/Sema/SemaCodeComplete.cpp =================================================================== --- clang/lib/Sema/SemaCodeComplete.cpp +++ clang/lib/Sema/SemaCodeComplete.cpp @@ -3653,6 +3653,10 @@ unsigned CurrentArg, Sema &S, CodeCompletionAllocator &Allocator, CodeCompletionTUInfo &CCTUInfo, bool IncludeBriefComments) const { PrintingPolicy Policy = getCompletionPrintingPolicy(S); + // Show signatures of constructors as they are declared: + // vector(int n) rather than vector<string>(int n) + // This is less noisy without being less clear, and avoids tricky cases. + Policy.SuppressTemplateArgsInCXXConstructors = true; // FIXME: Set priority, availability appropriately. CodeCompletionBuilder Result(Allocator, CCTUInfo, 1,
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits