]> granicus.if.org Git - clang/commitdiff
A member function never has "C" linkage. Fixes <rdar://problem/8318976>.
authorDouglas Gregor <dgregor@apple.com>
Tue, 17 Aug 2010 16:09:23 +0000 (16:09 +0000)
committerDouglas Gregor <dgregor@apple.com>
Tue, 17 Aug 2010 16:09:23 +0000 (16:09 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111238 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/Decl.cpp
test/SemaCXX/linkage-spec.cpp

index 419856ff50e981bf2795e3862ba7a6ad21cb0031..00b052d476c5038dd139f45871104619558e8d65 100644 (file)
@@ -989,6 +989,9 @@ bool FunctionDecl::isExternC() const {
 
       break;
     }
+    
+    if (DC->isRecord())
+      break;
   }
 
   return false;
index fdb642c78fcc26d4794019b945e7d0b5314a06bd..b2e8eb2ee8bb5c712d1f50585661fa4ebef8c036 100644 (file)
@@ -68,3 +68,12 @@ extern "C" void pr7859_b(int) {} // expected-error {{conflicting}}
 
 extern "C" void pr7859_c(short) {} // expected-note {{previous definition}}
 extern "C" void pr7859_c(int) {} // expected-error {{conflicting}}
+
+// <rdar://problem/8318976>
+extern "C" {
+  struct s0 {
+  private:
+    s0();
+    s0(const s0 &);
+  };
+}