forked from OSchip/llvm-project
[CodeComplete] Properly determine qualifiers of 'this' in a lambda
Summary: The clang used to pick up the qualifiers of the lamba's call operator (which is always const) and fail to show non-const methods of 'this' in completion results. Reviewers: kadircet Reviewed By: kadircet Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D55885 llvm-svn: 349655
This commit is contained in:
parent
79f2b15eab
commit
b45d851bdd
|
@ -3737,11 +3737,9 @@ void Sema::CodeCompleteOrdinaryName(Scope *S,
|
|||
|
||||
// If we are in a C++ non-static member function, check the qualifiers on
|
||||
// the member function to filter/prioritize the results list.
|
||||
if (CXXMethodDecl *CurMethod = dyn_cast<CXXMethodDecl>(CurContext)) {
|
||||
if (CurMethod->isInstance()) {
|
||||
Results.setObjectTypeQualifiers(CurMethod->getTypeQualifiers());
|
||||
}
|
||||
}
|
||||
auto ThisType = getCurrentThisType();
|
||||
if (!ThisType.isNull())
|
||||
Results.setObjectTypeQualifiers(ThisType->getPointeeType().getQualifiers());
|
||||
|
||||
CodeCompletionDeclConsumer Consumer(Results, CurContext);
|
||||
LookupVisibleDecls(S, LookupOrdinaryName, Consumer,
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
class foo {
|
||||
void mut_func() {
|
||||
[this]() {
|
||||
|
||||
}();
|
||||
// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:4:1 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s
|
||||
// CHECK-CC1: const_func
|
||||
// CHECK-CC1: mut_func
|
||||
}
|
||||
|
||||
void const_func() const {
|
||||
[this]() {
|
||||
|
||||
}();
|
||||
// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:13:1 %s -o - | FileCheck -check-prefix=CHECK-CC2 %s
|
||||
// CHECK-CC2-NOT: mut_func
|
||||
// CHECK-CC2: const_func
|
||||
};
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue