================
@@ -3141,6 +3148,10 @@ def warn_attribute_ignored_no_calls_in_stmt: Warning<
   "statement">,
   InGroup<IgnoredAttributes>;
 
+def warn_attribute_needs_aggregate : Warning<
----------------
higher-performance wrote:

Thanks so much for the review!

For `warn_field_requires_explicit_init`, I'm thinking maybe it shouldn't be an 
error by default, because it is really only relevant for code that will be 
executed. i.e. the following should not be an error:

```
// external_dep_1.h
struct S { int x; int y [[clang::requires_explicit_initialization]]; };

// external_dep_2.h
#include "external_dep_1.h"
inline S make_s(int x) { S s = {x}; return s; }
inline int get_default() { return 42; }

// main.cpp
#include "external_dep_1.h"
#include "external_dep_2.h"

int main() {
  return get_default();
}
```

If we demand users to modify a third-party `external_dep_2.h` just because 
_another_ third-party dependency happened to initialize a field in a later 
version `external_dep_2.h` wasn't previously compiled with, that would 
frustrate users. And I think most likely it would cause them to demote the 
error to a warning anyway.

https://github.com/llvm/llvm-project/pull/102040
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to