Assistance starting to work on implementing C++20 Designated Initializers?

Previously in a thread titled “Working on c++2a Designated Initializers”, I mentioned that I was interested in adding a warning to deal with a currently unguarded and nasty error where clang can silently fail to emit code for designated initializers using the C99 Syntax in c++ with non-POD types. If possible, I’d also be interested in helping add support for the new C++20 syntax.

Unfortunately, I’m still fairly new to clang and figuring out the ins and outs of it’s structure from zero is proving to be quite difficult. Thus far, my focus has been on SemaInit.cpp, but I suspect I’ll likely have to modify the AST code too. Would anyone be willing to have a quick chat to put together a rough plan for how something like this should be implemented in clang’s codebase? A brief consult or pointer from with someone familiar with how things are done in clang would be really helpful to figure out how to go about doing this and answer if I should, for example, be introducing a new type for c++ 20 style designated initializers to avoid changes to the C parser, or extending the C99 code and adding various conditionals to handle the different styles, and if so, where I should be doing that.

Thanks,
Walter