See inline comments.

You can easily make a test case with two files, there are many that do it.


================
Comment at: source/Symbol/ClangASTImporter.cpp:289-296
@@ -288,2 +288,10 @@
     {
-        return CompleteTagDecl(tag_type->getDecl());
+        auto tag_decl = tag_type->getDecl();
+        if (tag_decl->getDefinition() || tag_decl->isBeingDefined())
+        {
+            return true;
+        }
+        tag_decl->startDefinition();
+        bool result = CompleteTagDecl(tag_decl);
+        tag_decl->setCompleteDefinition(true);
+        return result;
----------------
Do we always want to set this to true? If we really just have a forward 
declaration in the DWARF "result" might be false. If we set this to true, it 
means anytime we have a forward declaration to a class, we might start and 
complete the class definition and say that is is a complete class that contains 
nothing. Then in another ClangASTContext we might have a full definition of the 
type, then we try to import both types into an expression ClangASTContext and 
it will fail saying there are two definitions. You should add any needed smarts 
to ComplateTagDecl() and not do anything inline like this.

http://reviews.llvm.org/D8561

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/



_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits

Reply via email to