diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-08-17 16:09:23 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-08-17 16:09:23 +0000 |
commit | 45975531e3e93033b41e04974340e4e8f7481d61 (patch) | |
tree | eb018264a0663e2b9f1a7fe6731395fbf6c290cf | |
parent | 16ed9ada523a990ca4bb5015c7bf8d0ead60c7d9 (diff) |
A member function never has "C" linkage. Fixes <rdar://problem/8318976>.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111238 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/AST/Decl.cpp | 3 | ||||
-rw-r--r-- | test/SemaCXX/linkage-spec.cpp | 9 |
2 files changed, 12 insertions, 0 deletions
diff --git a/lib/AST/Decl.cpp b/lib/AST/Decl.cpp index 419856ff50..00b052d476 100644 --- a/lib/AST/Decl.cpp +++ b/lib/AST/Decl.cpp @@ -989,6 +989,9 @@ bool FunctionDecl::isExternC() const { break; } + + if (DC->isRecord()) + break; } return false; diff --git a/test/SemaCXX/linkage-spec.cpp b/test/SemaCXX/linkage-spec.cpp index fdb642c78f..b2e8eb2ee8 100644 --- a/test/SemaCXX/linkage-spec.cpp +++ b/test/SemaCXX/linkage-spec.cpp @@ -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 &); + }; +} |