diff options
author | Qwinci <32550582+Qwinci@users.noreply.github.com> | 2024-03-06 06:33:55 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-05 23:33:55 -0500 |
commit | 7bad74e66756ca2fd1fe4f5864e7123fb4553d78 (patch) | |
tree | fa500c698d592b809c762aabccfcaa98608cc883 /clang/lib/Sema/SemaCodeComplete.cpp | |
parent | b930b14d5d8084425cec75f2037746ab99768c0f (diff) | |
download | llvm-7bad74e66756ca2fd1fe4f5864e7123fb4553d78.zip llvm-7bad74e66756ca2fd1fe4f5864e7123fb4553d78.tar.gz llvm-7bad74e66756ca2fd1fe4f5864e7123fb4553d78.tar.bz2 |
[clangd] Show argument names for function pointer struct fields (#69011)
Show argument names in signature help when calling a function pointer
struct field.
Diffstat (limited to 'clang/lib/Sema/SemaCodeComplete.cpp')
-rw-r--r-- | clang/lib/Sema/SemaCodeComplete.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaCodeComplete.cpp b/clang/lib/Sema/SemaCodeComplete.cpp index c44be0df..8d75239 100644 --- a/clang/lib/Sema/SemaCodeComplete.cpp +++ b/clang/lib/Sema/SemaCodeComplete.cpp @@ -6137,6 +6137,7 @@ ProduceSignatureHelp(Sema &SemaRef, MutableArrayRef<ResultCandidate> Candidates, // so that we can recover argument names from it. static FunctionProtoTypeLoc GetPrototypeLoc(Expr *Fn) { TypeLoc Target; + if (const auto *T = Fn->getType().getTypePtr()->getAs<TypedefType>()) { Target = T->getDecl()->getTypeSourceInfo()->getTypeLoc(); @@ -6145,6 +6146,11 @@ static FunctionProtoTypeLoc GetPrototypeLoc(Expr *Fn) { if (const auto *const VD = dyn_cast<VarDecl>(D)) { Target = VD->getTypeSourceInfo()->getTypeLoc(); } + } else if (const auto *ME = dyn_cast<MemberExpr>(Fn)) { + const auto *MD = ME->getMemberDecl(); + if (const auto *FD = dyn_cast<FieldDecl>(MD)) { + Target = FD->getTypeSourceInfo()->getTypeLoc(); + } } if (!Target) |