Unit tests: pass. 62138 tests passed, 0 failed and 808 were skipped.
Nit: maybe mention "top-level" in the patch?
this needs a name and/or comment to describe how it falls back to the primary template if the decl for the specialization isn't known.
this is handled by BaseType->getAsRecordDecl()
oops, needs some more tests.
oops, I missed where this was happening.
There are lots of non-vardecl cases where we might use a designated init.
This callback stuff doesn't seem so idiomatic in the parser from what I've seen - can we be a bit more direct and just pass the location?
as discussed offline, this doesn't handle null, neither does the new caller
see tests for more cases we handle
it is not just the location though, we are also lacking the information regarding initializers seen so far. there are other occurrences of this callback mechanisms while parsing parenthesized expressions, for similar reasons, lacking the bigger picture. I think it is better to keep those element parsing functions unaware of the outer state, since they mostly don't care or depend on it.
handling it in the new caller instead, as discussed previous caller technically can't have an incomplete type when it reaches this code path.
Unit tests: fail. 62159 tests passed, 5 failed and 811 were skipped.
failed: libc++.std/language_support/cmp/cmp_partialord/partialord.pass.cpp failed: libc++.std/language_support/cmp/cmp_strongeq/cmp.strongeq.pass.cpp failed: libc++.std/language_support/cmp/cmp_strongord/strongord.pass.cpp failed: libc++.std/language_support/cmp/cmp_weakeq/cmp.weakeq.pass.cpp failed: libc++.std/language_support/cmp/cmp_weakord/weakord.pass.cpp