Author: Akira Hatanaka Date: 2025-04-15T10:12:18-07:00 New Revision: 3192ecfa89a48b5f56ff36956abe7e84327ced5d
URL: https://github.com/llvm/llvm-project/commit/3192ecfa89a48b5f56ff36956abe7e84327ced5d DIFF: https://github.com/llvm/llvm-project/commit/3192ecfa89a48b5f56ff36956abe7e84327ced5d.diff LOG: [CodeComplete] Don't drop ArrayToPointerDecay when doing member completion (#134951) Fixes https://github.com/llvm/llvm-project/issues/123146. rdar://138851576 Added: Modified: clang/lib/Sema/SemaCodeComplete.cpp clang/test/CodeCompletion/member-access.c Removed: ################################################################################ diff --git a/clang/lib/Sema/SemaCodeComplete.cpp b/clang/lib/Sema/SemaCodeComplete.cpp index 793ffb6a00b86..f6ec4cb0f069e 100644 --- a/clang/lib/Sema/SemaCodeComplete.cpp +++ b/clang/lib/Sema/SemaCodeComplete.cpp @@ -5726,7 +5726,10 @@ class ConceptInfo { QualType getApproximateType(const Expr *E, HeuristicResolver &Resolver) { if (E->getType().isNull()) return QualType(); - E = E->IgnoreParenImpCasts(); + // Don't drop implicit cast if it's an array decay. + if (auto *ICE = dyn_cast<ImplicitCastExpr>(E); + !ICE || ICE->getCastKind() != CK_ArrayToPointerDecay) + E = E->IgnoreParenImpCasts(); QualType Unresolved = E->getType(); // Resolve DependentNameType if (const auto *DNT = Unresolved->getAs<DependentNameType>()) { diff --git a/clang/test/CodeCompletion/member-access.c b/clang/test/CodeCompletion/member-access.c index fc54993152815..f08d1957fb90a 100644 --- a/clang/test/CodeCompletion/member-access.c +++ b/clang/test/CodeCompletion/member-access.c @@ -36,3 +36,12 @@ void test4(struct Point *p) { } // RUN: %clang_cc1 -fsyntax-only -code-completion-with-fixits -code-completion-at=%s:%(line-3):13 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s // RUN: %clang_cc1 -fsyntax-only -code-completion-with-fixits -code-completion-at=%s:%(line-3):23 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s + +float test5(void) { + struct Point array[4]; + return array->x; +} +// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:%(line-2):17 %s -o - | FileCheck -check-prefix=CHECK-CC4 %s +// CHECK-CC4: COMPLETION: x : [#float#]x +// CHECK-CC4: COMPLETION: y : [#float#]y +// CHECK-CC4: COMPLETION: z : [#float#]z _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits