]> granicus.if.org Git - clang/commitdiff
Make Selector::getIdentifierInfo() private. I took a first attempt at this last
authorTed Kremenek <kremenek@apple.com>
Sat, 14 Mar 2009 00:20:08 +0000 (00:20 +0000)
committerTed Kremenek <kremenek@apple.com>
Sat, 14 Mar 2009 00:20:08 +0000 (00:20 +0000)
week in:

http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20090302/013580.html

That patch caused the output of the diagnostics to change. Since
'DeclarationName' can already reason about Selectors and the Diagnostics logic
reasons about DeclarationName, there is no additional code needed to get the
diagnostics working by making Selector::getIdentifierInfo() private.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66992 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/IdentifierTable.h
lib/Sema/SemaDeclObjC.cpp

index 70e1cbfdd37d36d77fb396e291307665275f4de3..02296c0e296bffbc36b27396faefe1043f6765dd 100644 (file)
@@ -337,6 +337,8 @@ private:
 /// selectors that take no arguments and selectors that take 1 argument, which 
 /// accounts for 78% of all selectors in Cocoa.h.
 class Selector {
+  friend class DiagnosticInfo;
+  
   enum IdentifierInfoFlag {
     // MultiKeywordSelector = 0.
     ZeroArg  = 0x1,
@@ -356,13 +358,6 @@ class Selector {
     assert((InfoPtr & ArgFlags) == 0 &&"Insufficiently aligned IdentifierInfo");
   }
   Selector(uintptr_t V) : InfoPtr(V) {}
-public:
-  friend class SelectorTable; // only the SelectorTable can create these
-  friend class DeclarationName; // and the AST's DeclarationName.
-
-  /// The default ctor should only be used when creating data structures that
-  ///  will contain selectors.
-  Selector() : InfoPtr(0) {}
   
   IdentifierInfo *getAsIdentifierInfo() const {
     if (getIdentifierInfoFlag())
@@ -372,6 +367,15 @@ public:
   unsigned getIdentifierInfoFlag() const {
     return InfoPtr & ArgFlags;
   }
+
+public:
+  friend class SelectorTable; // only the SelectorTable can create these
+  friend class DeclarationName; // and the AST's DeclarationName.
+
+  /// The default ctor should only be used when creating data structures that
+  ///  will contain selectors.
+  Selector() : InfoPtr(0) {}
+
   /// operator==/!= - Indicate whether the specified selectors are identical.
   bool operator==(Selector RHS) const {
     return InfoPtr == RHS.InfoPtr;
index 6ca64e388ec5652f555e3d2b00a01cb505abed4a..fb74519b57de9b667d06c7d784940d56efe0b504 100644 (file)
@@ -1137,7 +1137,7 @@ void Sema::ProcessPropertyDecl(ObjCPropertyDecl *property,
     Diag(property->getLocation(), 
          diag::err_accessor_property_type_mismatch) 
       << property->getDeclName()
-      << GetterMethod->getSelector().getAsIdentifierInfo();
+      << GetterMethod->getSelector();
     Diag(GetterMethod->getLocation(), diag::note_declared_at);
   }
   
@@ -1150,7 +1150,7 @@ void Sema::ProcessPropertyDecl(ObjCPropertyDecl *property,
       Diag(property->getLocation(), 
            diag::err_accessor_property_type_mismatch) 
         << property->getDeclName()
-        << SetterMethod->getSelector().getAsIdentifierInfo();
+        << SetterMethod->getSelector();
       Diag(SetterMethod->getLocation(), diag::note_declared_at);
     }
   }