rjmccall added inline comments.

================
Comment at: clang/include/clang/AST/DeclObjC.h:2787
+  /// interface as a decl context.
+  ObjCMethodDecl *SetterMethodDecl = nullptr;
+
----------------
Are these comments right?  The DC is the implementation's interface?

Regardless, I think these comments are misleading: the right way to put this is 
that these are the getter and setter method *definitions* (even if they don't 
necessarily have a body).  And, relatedly, you should mention whether these are 
set even if the methods are defined explicitly or only if they're synthesized.


================
Comment at: clang/include/clang/Sema/Sema.h:8522
+  /// implementation, but only if they haven't been overridden by an
+  /// explicit definition.
+  llvm::DenseMap<ObjCContainerDecl *,
----------------
Property accessors are created in the `@implementation` if they aren't defined 
explicitly there.

Does this really need to be global state on Sema?  Does it theoretically need 
to be serialized and restored if e.g. a translation-unit prefix is cut after an 
`@implementation` is seen?


================
Comment at: clang/lib/AST/DeclObjC.cpp:1381
+      }
+    }
+
----------------
Can you just do this as a simple check to look through the `ObjCImplDecl` to 
the `ObjCInterfaceDecl` as the first thing, immediately after you initialize 
`Container`?


================
Comment at: clang/lib/Analysis/BodyFarm.cpp:843
+    return Val.getValue();
+  Val = nullptr;
+
----------------
Why did this logic need to change?


================
Comment at: clang/lib/CodeGen/CGObjCGNU.cpp:1887
+        addIfExists(propImpl->getGetterMethodDecl());
+        addIfExists(propImpl->getSetterMethodDecl());
       }
----------------
This is only correct if these methods aren't defined explicitly by the user, 
right?  Or do this methods return null in that case?

Same question goes for the CGObjCMac code.


================
Comment at: clang/lib/CodeGen/CGObjCMac.cpp:6698
     emitMethodConstant(methodArray, MD, forProtocol);
-  }
   methodArray.finishAndAddTo(values);
 
----------------
Spurious change.


================
Comment at: clang/lib/CodeGen/CodeGenFunction.cpp:639
+void CodeGenFunction::StartFunction(GlobalDecl GD, QualType RetTy,
                                     llvm::Function *Fn,
                                     const CGFunctionInfo &FnInfo,
----------------
Spurious change.


================
Comment at: clang/lib/CodeGen/CodeGenModule.cpp:5063
                                  const_cast<ObjCImplementationDecl *>(D), PID);
     }
   }
----------------
Is this special treatment still necessary?  Won't we encounter the getter and 
setter on the normal pass over the method definitions in the `@implementation`?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D68108/new/

https://reviews.llvm.org/D68108



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to