diff options
-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 &); + }; +} |