Pulled in a new version of LLVM/Clang to solve a variety
of problems with Objective-C object completion.  To go
along with the LLVM/Clang-side fixes, we have a variety
of Objective-C improvements.

Fixes include:

- It is now possible to run expressions when stopped in
  an Objective-C class method and have "self" act just
  like "self" would act in the class method itself (i.e.,
  [self classMethod] works without casting the return
  type if debug info is present).  To accomplish this,
  the expression masquerades as a class method added by
  a category.

- Objective-C objects can now provide methods and
  properties and methods to Clang on demand (i.e., the
  ASTImporter sets hasExternalVisibleDecls on Objective-C
  interface objects).

- Objective-C built-in types, which had long been a bone
  of contention (should we be using "id"?  "id*"?), are
  now fetched correctly using accessor functions on
  ClangASTContext.  We inhibit searches for them in the
  debug information.

There are also a variety of logging fixes, and I made two
changes to the test suite:

- Enabled a test case for Objective-C properties in the
  current translation unit.

- Added a test case for calling Objective-C class methods
  when stopped in a class method.

llvm-svn: 144607
diff --git a/lldb/source/Symbol/ClangASTImporter.cpp b/lldb/source/Symbol/ClangASTImporter.cpp
index ef0dcfe..92c2325 100644
--- a/lldb/source/Symbol/ClangASTImporter.cpp
+++ b/lldb/source/Symbol/ClangASTImporter.cpp
@@ -186,14 +186,26 @@
         to_namespace_decl->setHasExternalVisibleStorage();
     }
     
-    if (isa<ObjCInterfaceDecl>(from))
+    if (ObjCInterfaceDecl *from_interface_decl = dyn_cast<ObjCInterfaceDecl>(from))
     {
         ObjCInterfaceDecl *to_interface_decl = dyn_cast<ObjCInterfaceDecl>(to);
         
+        to_interface_decl->setHasExternalLexicalStorage();
         to_interface_decl->setHasExternalVisibleStorage();
         
-        if (!to_interface_decl->isForwardDecl())
-            to_interface_decl->setExternallyCompleted();
+        if (to_interface_decl->isForwardDecl())
+            to_interface_decl->completedForwardDecl();
+        
+        to_interface_decl->setExternallyCompleted();
+        
+        if (log)
+            log->Printf("    [ClangASTImporter] Imported %p, a %s named %s%s%s%s",
+                        to,
+                        ((clang::Decl*)from_interface_decl)->getDeclKindName(),
+                        from_interface_decl->getName().str().c_str(),
+                        (to_interface_decl->hasExternalLexicalStorage() ? " Lexical" : ""),
+                        (to_interface_decl->hasExternalVisibleStorage() ? " Visible" : ""),
+                        (to_interface_decl->isForwardDecl() ? " Forward" : ""));
     }
     
     return clang::ASTImporter::Imported(from, to);