JonasToth added inline comments.

================
Comment at: clang-tidy/cppcoreguidelines/OwningMemoryCheck.cpp:149
+  // Deletion of non-owners, with `delete variable;`
+  if (DeletedVariable != nullptr) {
+    assert(DeleteStmt != nullptr &&
----------------
aaron.ballman wrote:
> Can `DeletedVariable` ever be null if `DeleteStmt` is non-null? I don't think 
> it can, so perhaps the best approach is to gate on `DeleteStmt` and remove 
> the assert.
I think that both will be matched simultaneously, but i was unsure, therefor i 
programmed it defensive.
I can change it if you want.


================
Comment at: clang-tidy/cppcoreguidelines/OwningMemoryCheck.cpp:153
+    diag(DeleteStmt->getLocStart(),
+         "deleting unowned memory; use RAII or gsl::owner")
+        << SourceRange(DeletedVariable->getLocStart(),
----------------
aaron.ballman wrote:
> "use RAII" is not particularly helpful. I think this means you should use a 
> smart pointer, no? If so, I'd recommend: `"deleting a pointer through a type 
> that is not marked 'gsl::owner'; consider using a smart pointer instead"` or 
> something along those lines.
in this case RAII means smartpointers, but in general `gsl::owner` could be 
file handles, sockets and whatever else.

i will adjust the warning to mention smartpointers.


================
Comment at: clang-tidy/cppcoreguidelines/OwningMemoryCheck.cpp:168
+    diag(ExpectedOwner->getLocStart(),
+         "expected this argument to be an owner or a recognized resource")
+        << SourceRange(ExpectedOwner->getLocStart(),
----------------
aaron.ballman wrote:
> I'm having a bit of a hard time understanding the guidance in this warning. 
> How about: `"argument is expected to be of type 'gsl::owner<>'; got %0"` and 
> pass in the type of the argument?
> 
> I think something needs to be done to better-define "recognized resource" 
> before it's used as a term of art in the diagnostics; this applies elsewhere 
> as well.
I used the term 'recognized resource' since `FILE*` would be a resource as 
well, but the there is no way the C standard function could return an 
`gsl::owner<>`. 

I plan to enhance this check, to allow of lists of C/C++ functions that are 
known to create a resource, but can not be changed.
The effect would be like in the case of `new` - whenever such a function is 
called, the result must be assigned to an `gsl::owner`.
Furthermore the CppCoreGuidelines usually talk about 'resources', so the 
wording is somewhat similar.

same applies to next comment


https://reviews.llvm.org/D36354



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

Reply via email to