From: Eric Fiselier Date: Tue, 11 Dec 2018 16:53:25 +0000 (+0000) Subject: Pass PartialOverloading argument to the correct corresponding parameter X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=59639b0645cb218eb6e05b05630254b28a90bfed;p=clang Pass PartialOverloading argument to the correct corresponding parameter git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@348864 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaOverload.cpp b/lib/Sema/SemaOverload.cpp index 7f627c270d..22514ee242 100644 --- a/lib/Sema/SemaOverload.cpp +++ b/lib/Sema/SemaOverload.cpp @@ -8939,12 +8939,14 @@ Sema::AddArgumentDependentLookupCandidates(DeclarationName Name, if (ExplicitTemplateArgs) continue; - AddOverloadCandidate(FD, FoundDecl, Args, CandidateSet, false, + AddOverloadCandidate(FD, FoundDecl, Args, CandidateSet, + /*SupressUserConversions=*/false, PartialOverloading); - } else - AddTemplateOverloadCandidate(cast(*I), - FoundDecl, ExplicitTemplateArgs, - Args, CandidateSet, PartialOverloading); + } else { + AddTemplateOverloadCandidate( + cast(*I), FoundDecl, ExplicitTemplateArgs, Args, + CandidateSet, /*SupressUserConversions=*/false, PartialOverloading); + } } } diff --git a/test/CodeCompletion/function-overloads.cpp b/test/CodeCompletion/function-overloads.cpp index 00998b0228..11c864c281 100644 --- a/test/CodeCompletion/function-overloads.cpp +++ b/test/CodeCompletion/function-overloads.cpp @@ -10,12 +10,27 @@ void test() { A a(f(1, 2, 3, 4), 2, 3); } + +namespace NS { + struct X { }; + struct Y { Y(X); }; + template + void g(X, Y); +} + +void test_adl() { + NS::X x; + g(x, x); +} + // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:10:9 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:10:10 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:10:17 %s -o - | FileCheck -check-prefix=CHECK-CC2 %s // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:10:19 %s -o - | FileCheck -check-prefix=CHECK-CC2 %s // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:10:20 %s -o - | FileCheck -check-prefix=CHECK-CC3 %s // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:10:21 %s -o - | FileCheck -check-prefix=CHECK-CC4 %s +// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:23:7 %s -o - | \ +// RUN: FileCheck -check-prefix=CHECK-CC5 %s // CHECK-CC1: OVERLOAD: [#int#]f(<#float x#>, float y) // CHECK-CC1: OVERLOAD: [#int#]f(<#int i#>) // CHECK-CC1-NOT, CHECK-CC2-NOT: OVERLOAD: A( @@ -25,3 +40,4 @@ void test() { // CHECK-CC3: OVERLOAD: A(<#const A &#>) // CHECK-CC3: OVERLOAD: A(<#A &&#>) // CHECK-CC4: OVERLOAD: A(int, <#int#>, int) +// CHECK-CC5: OVERLOAD: [#void#]g(X, <#Y#>)