ASTImporter has some bugs when it's importing types that themselves come from an ExternalASTSource. This is exposed particularly in the behavior when comparing complete TagDecls with forward declarations. This patch does several things:
- Adds a test case making sure that conflicting forward-declarations are resolved correctly;
- Extends the clang-import-test harness to test two-level importing, so that we make sure we complete types when necessary; and
- Fixes a few bugs I found this way. Failure to complete types was one; however, I also discovered that complete RecordDecls aren't properly added to the redecls chain for existing forward declarations.
By the way, should we do the same for some other kinds of Decls (like FunctionDecl)? If so, could you write a NOTE comment?