summaryrefslogtreecommitdiffstats
path: root/development/qt-creator-llvm/patches/020_D37435_Dont-show-deleted-function-constructor-candidates-for-code-completion.patch
diff options
context:
space:
mode:
Diffstat (limited to 'development/qt-creator-llvm/patches/020_D37435_Dont-show-deleted-function-constructor-candidates-for-code-completion.patch')
-rw-r--r--development/qt-creator-llvm/patches/020_D37435_Dont-show-deleted-function-constructor-candidates-for-code-completion.patch50
1 files changed, 50 insertions, 0 deletions
diff --git a/development/qt-creator-llvm/patches/020_D37435_Dont-show-deleted-function-constructor-candidates-for-code-completion.patch b/development/qt-creator-llvm/patches/020_D37435_Dont-show-deleted-function-constructor-candidates-for-code-completion.patch
new file mode 100644
index 0000000000..01a79b27db
--- /dev/null
+++ b/development/qt-creator-llvm/patches/020_D37435_Dont-show-deleted-function-constructor-candidates-for-code-completion.patch
@@ -0,0 +1,50 @@
+diff --git a/tools/clang/lib/Sema/SemaCodeComplete.cpp b/tools/clang/lib/Sema/SemaCodeComplete.cpp
+index 4de7d42207..7001849426 100644
+--- a/tools/clang/lib/Sema/SemaCodeComplete.cpp
++++ b/tools/clang/lib/Sema/SemaCodeComplete.cpp
+@@ -4286,9 +4286,12 @@ static void mergeCandidatesWithResults(Sema &SemaRef,
+ });
+
+ // Add the remaining viable overload candidates as code-completion results.
+- for (auto &Candidate : CandidateSet)
++ for (auto &Candidate : CandidateSet) {
++ if (Candidate.Function && Candidate.Function->isDeleted())
++ continue;
+ if (Candidate.Viable)
+ Results.push_back(ResultCandidate(Candidate.Function));
++ }
+ }
+ }
+
+diff --git a/tools/clang/test/Index/complete-constructor-params.cpp b/tools/clang/test/Index/complete-constructor-params.cpp
+index 6685626a58..949077a214 100644
+--- a/tools/clang/test/Index/complete-constructor-params.cpp
++++ b/tools/clang/test/Index/complete-constructor-params.cpp
+@@ -18,6 +18,20 @@ int main() {
+ int(42);
+ }
+
++struct Foo {
++ Foo() = default;
++ Foo(const Foo&) = delete;
++};
++
++struct Bar {
++ Foo f;
++};
++
++void function() {
++ Bar b1;
++ Bar b2(b1);
++}
++
+ // RUN: c-index-test -code-completion-at=%s:11:10 %s | FileCheck -check-prefix=CHECK-CC1 %s
+ // CHECK-CC1: OverloadCandidate:{Text S}{LeftParen (}{CurrentParameter const S<int> &}{RightParen )} (1)
+ // CHECK-CC1: OverloadCandidate:{Text S}{LeftParen (}{CurrentParameter int}{Comma , }{Placeholder U}{Comma , }{Placeholder U}{RightParen )} (1)
+@@ -138,3 +152,6 @@ int main() {
+ // CHECK-CC10-NEXT: Class name
+ // CHECK-CC10-NEXT: Nested name specifier
+ // CHECK-CC10-NEXT: Objective-C interface
++
++// RUN: c-index-test -code-completion-at=%s:32:12 -std=c++11 %s | FileCheck -check-prefix=CHECK-CC11 %s
++// CHECK-CC11-NOT: OverloadCandidate:{Text Bar}{LeftParen (}{CurrentParameter const Bar &}{RightParen )} (1)