summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-10-09 22:38:36 +0000
committerDouglas Gregor <dgregor@apple.com>2011-10-09 22:38:36 +0000
commit56636589ffd881eac56c57bd06c6b12f19762d16 (patch)
tree390b38aa3ac137b72541c79da6d066f528eb5bf3 /clang/lib/Sema
parentf892c7fe6053e409eff12c97470aded3976fb103 (diff)
downloadbcm5719-llvm-56636589ffd881eac56c57bd06c6b12f19762d16.tar.gz
bcm5719-llvm-56636589ffd881eac56c57bd06c6b12f19762d16.zip
The effective context of a friend function is its lexical
context. Fixes PR9103. llvm-svn: 141520
Diffstat (limited to 'clang/lib/Sema')
-rw-r--r--clang/lib/Sema/SemaAccess.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaAccess.cpp b/clang/lib/Sema/SemaAccess.cpp
index 14c8ebafe7d..d322ebd4100 100644
--- a/clang/lib/Sema/SemaAccess.cpp
+++ b/clang/lib/Sema/SemaAccess.cpp
@@ -103,7 +103,11 @@ struct EffectiveContext {
} else if (isa<FunctionDecl>(DC)) {
FunctionDecl *Function = cast<FunctionDecl>(DC)->getCanonicalDecl();
Functions.push_back(Function);
- DC = Function->getDeclContext();
+
+ if (Function->getFriendObjectKind())
+ DC = Function->getLexicalDeclContext();
+ else
+ DC = Function->getDeclContext();
} else if (DC->isFileContext()) {
break;
} else {
OpenPOWER on IntegriCloud