Access control for overloaded call operators.  Not for surrogates yet,
mostly because we're going to want a better diagnostic for conversions.

Also this API needs to go back to sanity.

llvm-svn: 94730
diff --git a/clang/test/CXX/class.access/p4.cpp b/clang/test/CXX/class.access/p4.cpp
index 3f4397a..0df1791 100644
--- a/clang/test/CXX/class.access/p4.cpp
+++ b/clang/test/CXX/class.access/p4.cpp
@@ -38,12 +38,15 @@
   public:
     void operator+(Public&);
     void operator[](Public&);
+    void operator()(Public&);
   protected:
     void operator+(Protected&); // expected-note {{declared protected here}}
     void operator[](Protected&); // expected-note {{declared protected here}}
+    void operator()(Protected&); // expected-note {{declared protected here}}
   private:
     void operator+(Private&); // expected-note {{declared private here}}
     void operator[](Private&); // expected-note {{declared private here}}
+    void operator()(Private&); // expected-note {{declared private here}}
     void operator-(); // expected-note {{declared private here}}
   };
   void operator+(const A &, Public&);
@@ -58,6 +61,9 @@
     a[pub];
     a[prot]; // expected-error {{access to protected member}}
     a[priv]; // expected-error {{access to private member}}
+    a(pub);
+    a(prot); // expected-error {{access to protected member}}
+    a(priv); // expected-error {{access to private member}}
     -a;       // expected-error {{access to private member}}
 
     const A &ca = a;