aaron.ballman added a comment.

Thank you for working on this! The changes should come with a release note.

I think the diagnostic is triggered a bit to aggressively in the case where 
there is an invalid initializer for a field -- we'll claim there is no 
initializer in that case, but that effectively duplicates the diagnostics 
without adding anything actionable for the user to do (once they fix the 
initialization, both diagnostics go away). Can we silence the diagnostic in 
these cases?



================
Comment at: clang/test/SemaCXX/cxx2a-initializer-aggregates.cpp:64
+                       // wmissing-warning@-1 {{missing field 'y' initializer}}
+                       // wmissing-warning@-2 {{missing field 'a' initializer}}
 struct C { int :0, x, :0, y, :0; };
----------------
This second warning seems wrong, there is an initializer for `a`, it's just not 
a valid one.


================
Comment at: clang/test/SemaCXX/cxx2a-initializer-aggregates.cpp:73
   .x = 1, // override-error {{overrides prior initialization}}
-};
+}; //wmissing-warning {{missing field 'x' initializer}}
+
----------------
This warning is quite wrong, there's a whole pile of initializers for `x`. :-)


================
Comment at: clang/test/SemaCXX/cxx2a-initializer-aggregates.cpp:229
     .a = 1, // reorder-error {{field 'b' will be initialized after field 'a'}}
-};
+}; // wmissing-warning {{missing field 'a' initializer}}
 }
----------------
I also think this one is wrong.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D157879

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

Reply via email to