================
@@ -264,9 +292,18 @@ bool CallAndMessageChecker::uninitRefOrPointer(
   if (!ParamT->isPointerOrReferenceType())
     return false;
 
+  bool AllowPartialInitializedness = StructInitializednessComplete;
----------------
NagyDonat wrote:

This initialization confused me, because these variable names seem to be 
opposites:
- `AllowPartialInitializedness` is true iff the checker allows partially 
initialized structs (in addition to completely initialized structs, which are 
obviously always OK)
- `StructInitializednessComplete` is true iff the checker requires that struct 
initializedness must be complete, i.e. a the checker only accepts completely 
initialized structs as "initialized".

As I looked up the definition of that member variable it says
```c++
  /// When checking a struct value for uninitialized data, should all the fields
  /// be un-initialized or only find one uninitialized field.
  bool StructInitializednessComplete = true;
```
which means that this initialization **is** correct, but 
`StructInitializednessComplete` is misnamed: for me its name means the opposite 
of the explanatory comment.

Of course, I see that this variable was added by PR 
https://github.com/llvm/llvm-project/pull/164600 where I gave an approving 
review, so I should have said this earlier :sweat_smile: – but as a delayed 
review comment I'm asking you now to pick a better name for that data member.

In situations like this – when there is a hard-to-name boolean – I personally 
like the approach where the `bool` type is replaced by a simple enum like
```c++
enum class InitializationLevel { Uninitialized, Partial, Full };
```
and then it is possible to use variables like `InitializationLevel 
RequiredInitLevel` which would be self-documenting.

However, I'm also completely open to using a boolean with a better name. In 
fact, the name `AllowPartialInitializedness` is fairly descriptive for this 
boolean value, so you can switch to using that name as the name of the data 
member, renaming the local boolean to `AllowPartialInitializednessHere`. 

https://github.com/llvm/llvm-project/pull/173854
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to