[clang-tools-extra] [include-cleaner] Ensure receiver headers are kept when accessing ObjC properties (PR #212633)

Nico Weber via cfe-commits cfe-commits at lists.llvm.org
Sat Aug 1 07:06:36 PDT 2026


================
@@ -417,17 +417,32 @@ class ASTWalker : public RecursiveASTVisitor<ASTWalker> {
   }
 
   bool VisitObjCMessageExpr(ObjCMessageExpr *E) {
+    auto startLoc = E->getSelectorStartLoc();
     // Identify the selector and the method declaration
     if (auto *Method = E->getMethodDecl()) {
       // Report the method as a used symbol
-      report(E->getSelectorStartLoc(), Method);
+      report(startLoc, Method);
     }
 
     // If it's a class message, report the interface/class as used
     if (E->getReceiverKind() == ObjCMessageExpr::Class) {
       if (auto *Interface = E->getReceiverInterface()) {
         report(E->getReceiverRange().getBegin(), Interface);
       }
----------------
nico wrote:

coding style nits: LLVM generally prefers early returns over if/else chains.  So:

``` 
    // If it's a class message, report the interface/class as used
    if (E->getReceiverKind() == ObjCMessageExpr::Class) {
      if (auto *Interface = E->getReceiverInterface()) {
        report(E->getReceiverRange().getBegin(), Interface);
      }
      return true;
  // new code here, dedented
```

https://github.com/llvm/llvm-project/pull/212633


More information about the cfe-commits mailing list