Improvements and fixes for name lookup with using directives, from Piotr Rak!

Also, put Objective-C protocols into their own identifier
namespace. Otherwise, we find protocols when we don't want to in C++
(but not in C).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63877 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/clang/AST/DeclBase.h b/include/clang/AST/DeclBase.h
index eaecb1e..5c03b33 100644
--- a/include/clang/AST/DeclBase.h
+++ b/include/clang/AST/DeclBase.h
@@ -64,7 +64,8 @@
     IDNS_Label = 0x1,
     IDNS_Tag = 0x2,
     IDNS_Member = 0x4,
-    IDNS_Ordinary = 0x8
+    IDNS_Ordinary = 0x8,
+    IDNS_Protocol = 0x10
   };
   
   /// ObjCDeclQualifier - Qualifier used on types in method declarations
@@ -218,13 +219,15 @@
     case ObjCMethod:
     case ObjCContainer:
     case ObjCCategory:
-    case ObjCProtocol:
     case ObjCInterface:
     case ObjCCategoryImpl:
     case ObjCProperty:
     case ObjCCompatibleAlias:
       return IDNS_Ordinary;
 
+    case ObjCProtocol:
+      return IDNS_Protocol;
+
     case Field:
     case ObjCAtDefsField:
     case ObjCIvar: